Использование двоичных данных в качестве источника в тэге Railo cfpdf
Поэтому я сохраняю блоб PDF в базе данных и пытаюсь извлечь его и отобразить на странице. Когда я запускаю код на Coldfusion 10, он работает как положено. Однако, когда я перемещаю тот же самый точный код в Railo 4.2.1.0, я получаю ошибку.
Мне любопытно, можно ли передавать двоичные данные в тег источника CFPDF в Railo. Если нет, кто-нибудь знает хороший обходной путь?
Когда я запускаю дамп, у данных pdfBinary есть правильная двоичная информация.
Спасибо
Код:
<cfset tcpInformation = dataPopulatorController.getTCPInformation(session.requestID, session.personID) />
<cfset pdfBinary = tcpInformation.file_content[1]>
<cfpdf action="read" source="pdfBinary" name="TCPDocument">
<cfheader name="Content-Disposition" value="filename=TCP.pdf" />
<cfcontent type="application/pdf" variable="#toBinary(TCPDocument)#" />
Ошибка, которую я получаю на Railo:
Произошла ошибка в /****/tcpviewer.cfm: строка 7 5: 6: 7: 8: 9:
Файл или каталог Java Stacktrace pdfBinary не существует по адресу railo.commons.io.res.util.ResourceUtil.toResourceExisting(ResourceUtil.java:199):199 по адресу railo.commons.io.res.util.ResourceUtil.toResourceExisting(ResourceUtil.java:164):164 в railo.runtime.tag.PDF.toPDFDocument(PDF.java:1207):1207 в railo.runtime.tag.PDF.doActionRead(PDF.java:1033):1033 в railo.runtime.tag.PDF.doEndTag(PDF.java:568):568 по адресу onboarding.views.tcpviewer_cfm$cf.call(/onboarding/views/tcpviewer.cfm:7):7 по адресу railo.runtime.PageContextImpl.doInclude(PageContextImp13.java:9): 913 в railo.runtime.PageContextImpl.doInclude(PageContextImpl.java:865):865 в railo.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:206):206 в railo.runtime.lonppenerLix.java:18):18 по адресу railo.runtime.PageContextImpl.execute(PageContextImpl.java:2218):2218 по адресу railo.runtime.PageContextImpl.execute(PageContextImpl.java:2185):2185 по адресу railo.runmp.Imp.Ing. serviceCFML (CFMLEngineImpl.java:332):332 at railo.loader.servlet.CFMLServlet.service(CFMLServlet.java:29):29 в javax.servlet.http.HttpServlet.service(HttpServlet.java:728):728 в org.apache.catalina.core. (StandardWrapperValve.java:222):222 в org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123):123 в org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.in47). 472 в org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171):171 в org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99):99 в org.apache.cat. valve.AccessLogValve.invoke(AccessLogValve.java:947):947 в org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118):118 в org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408):408 в org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200):200 в org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(Аннотация java:589):589 в org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310):310 в java.util.concurrent.ThreadPoolExecutor.runWorker(неизвестный источник):-1 в java.util.concurrent.ThreadPoolExecutor$Worker.run(неизвестный источник):-1 на java.lang.Thread.run(неизвестный источник):-1
1 ответ
При чтении из источника двоичной переменной в Railo кажется, что вам нужно обернуть его #s:
<cfpdf action="read" source="#pdfBinary#" name="TCPDocument">
Но, как говорит Ли, нет необходимости перечитывать переменную с помощью CFPDF для вывода содержимого в браузер:
<cfset tcpInformation = dataPopulatorController.getTCPInformation(session.requestID, session.personID) />
<cfset pdfBinary = tcpInformation.file_content[1]>
<cfheader name="Content-Disposition" value="filename=TCP.pdf" />
<cfcontent type="application/pdf" variable="#pdfBinary#" />