2015-10-13 3 views
2

Вставить в MS-SQL 2008 DatabaseColdFusion Как сохранить 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

DB type MS-sql 2008, fieldtype является Varbinary (MAX) –

ответ

4

Ваш код правильный в принципе. Убедитесь, что настройки в CF-админе допускают данные blob - в противном случае это может быть усечено в БД. Довольно типично не разрешать данные BLOB через драйвер (по умолчанию он НЕ допускается в настройках DSN). Если вы включите его, вы должны быть хорошими.


Я публикую этот ответ, поэтому вы можете пометить его как правильное на основе комментариев (по предложению Ли). :)