2014-10-08 35 views
1

因此,我將PDF blob保存在數據庫中,並試圖檢索它並將其顯示在頁面上。當我在ColdFusion 10上運行代碼時,它按預期運行。但是,當我將相同的確切代碼移到Railo 4.2.1.0時,出現錯誤。將二進制數據用作RailOf cfpdf標記的源

我很好奇,如果可以將二進制數據傳遞到Railo中的CFPDF Source標籤。如果沒有人知道一個很好的解決方法?

當我運行一個轉儲的時候,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不存在 at railo.commons.io.res.util.ResourceUtil.toResourceExisting(ResourceUtil.java:199):199 at 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 at onboarding.views.tcpviewer_cfm $ cf.call(/onboarding/views/tcpviewer.cfm:7):7 at railo.runtime.PageContextImpl .doInclude(PageContextImpl.java:913):913 at railo.runtime.PageContextImpl.doInclude(PageContextImpl.java:865):865 at railo.runtime.listener.ModernAppListener._onRequ EST(ModernAppListener.java:206):206 在railo.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:18):18 在railo.runtime.PageContextImpl.execute(PageContextImpl.java:2218):2218 在railo.runtime.PageContextImpl.execute(PageContextImpl.java:2185):2185 at railo.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:332):332 at railo.loader.servlet.CFMLServlet.service(CFMLServlet。 java:29 at javax.servlet.http.HttpServlet.service(HttpServlet.java:728):728 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305):305 at org.apache.catalin org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210):210 a.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222):222 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123):123 at org.apache.catalina.authenticator.AuthenticatorBase。 invoke(AuthenticatorBase.java:472):472 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171):171 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: 99):99 在org.apache.catalina.valves.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 at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.j ava:200):200 at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol。java:589):589 at org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:310):310 at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source): - 1 在java.util.concurrent.ThreadPoolExecutor中$ Worker.run(未知來源): - 1 在java.lang.Thread.run(未知來源): - 1

+2

cfpdf action =「read」的用途是什麼?你應該可以直接使用二進制''cfcontent type =「application/pdf」variable =「#pdfBinary#」/>' – Leigh 2014-10-08 03:15:37

回答

1

在Railo它從二進制變量源讀取當看來你需要用#分別將其包裝:

<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#" />