CFPDF создает переменную из BLOB

В ColdFusion 9 у нас есть данные в формате PDF, хранящиеся в большом двоичном объекте в базе данных.

Как мне получить это в переменной cfpdf? Кажется, что все параметры требуют имени файла. Есть ли способ сделать это без записи файла?


person Tom Hubbard    schedule 21.02.2011    source источник


Ответы (1)


CFPDF и CFDOCUMENT предназначены для динамического создания и изменения PDF. Поскольку у вас уже есть PDF-файл в виде большого двоичного объекта в вашей базе данных, вам просто нужна страница CF, чтобы отправить ее обратно как часть ответа с использованием CFCONTENT. Предполагая, что вы используете некоторый тип идентификатора для ссылки на PDF-файл, который вы хотите получить из своей базы данных, пример будет выглядеть так:

<cfquery name="qryFile" datasource="MyDatasourceHere">
    SELECT id, name, data
    FROM files
    WHERE id = <cfqueryparam cfsqltype="cf_sql_integer" value="#URL.id#" />
</cfquery>
<cfheader name="content-length" value="#ArrayLen(qryFile.data)#" />
<cfheader name="content-disposition" value="attachment; filename=#qryFile.name#" />
<cfcontent type="application/octet-stream" variable="#qryFile.data#" />
person Matt Shooks    schedule 21.02.2011
comment
Спасибо. Я хотел бы поместить его в переменную CFPDF, чтобы я мог также выполнять некоторые действия CFPDF. - person Tom Hubbard; 21.02.2011
comment
Попался, если вы не хотите вставлять его в файловую систему вашего веб-сервера и у вас есть ColdFusion 9, вы можете использовать виртуальную файловую систему CF и вместо этого хранить файлы в памяти, используя ram:// - person Matt Shooks; 21.02.2011