2015-10-13 25 views
2

插入取它MS-SQL 2008数据库的ColdFusion如何保存PDF文件在数据库和浏览器

<cffile action="READBINARY" file="#form.FileContents#" variable="binPDF"> 
<cfquery name="Uploaded" datasource="#cfbasedatasource#"> 
INSERT INTO UploadedFiles 
    (
    AccountId, 
    Filecontent 
    ) 
VALUES 
    (
    '#UrlAccountId#', 
    <cfqueryparam value='#binPDF#' cfsqltype='cf_sql_blob'> 
    ) 
</cfquery> 

==================== ===== 这是显示从数据库到浏览器:

<cfset binaryData = #cfGetfilecontentquery.Filecontent[1]#> 
<cfheader name="Content-Disposition" value="inline; filename=testDocument.pdf"> 
<cfcontent variable="#binarydata#" type="application/pdf" reset="yes" /> 

但我只能在浏览器中看到“无法加载PDF文件”

+0

哪个dbms? Filecontent列的数据类型是什么?另外,您是否确认完整的二进制文件正在保存?如果将二进制文件写入磁盘上的.pdf文件并在该文件中打开,会发生什么情况。 – Leigh

+2

你的原则是正确的。确保CF管理员中的设置允许blob数据 - 否则它可能会在数据库中被截断。 –

+0

数据库类型MS-sql 2008,字段类型是Varbinary(MAX) –

回答

4

你的代码是在原则上是正确的。确保CF管理员中的设置允许blob数据 - 否则它可能会在数据库中被截断。通过驱动程序不允许BLOB数据是非常典型的(默认情况下,它不允许在DSN设置中使用)。如果你启用它,你应该很好。


我在发布这个答案,以便您可以根据评论(根据Leigh的建议)将其标记为正确。 :)

相关问题