Как я могу принудительно загрузить PDF в URL? - PullRequest
8 голосов
/ 26 июля 2011

У меня есть URL, который идет в PDF-файл.На моей странице Coldfusion я хочу разрешить пользователю загружать файл (используя диалоговое окно открытия / сохранения или каким-либо другим браузером):

Это код, который у меня есть:

<cfset tempFile = getTempFile(getTempDirectory(), 'testfile') />
<cfhttp url="myUrl/myFile.pdf" method="get" file="#tempFile#"/>

<cfheader name="Content-Disposition" value="attachment; filename=myFile.pdf">
<cfcontent type="application/pdf" file="#tempFile#">

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

Ответы [ 2 ]

12 голосов
/ 27 июля 2011

атрибут файла: Не указывайте путь к каталогу в этом атрибуте; использование атрибут пути.

Попробуйте разделить имя файла и путь:

<!--- hard coded for clarity --->
<cfhttp url="http://www.somesite.com/path/testFile.pdf" 
        method="get" 
        getAsBinary="yes"
        path="c:/test/" 
        file="testFile.pdf"/>

<cfheader name="Content-Disposition" value="attachment; filename=myFile.pdf" />
<cfcontent type="application/pdf" file="c:/test/testFile.pdf" />

Для небольших файлов вы можете пропустить временный файл и использовать <cfcontent variable..>

<cfhttp url="http://download.macromedia.com/pub/documentation/en/coldfusion/mx7/cfmx7_cfml_qref.pdf" 
        method="get" 
        getAsBinary="yes" />

<cfheader name="Content-Disposition" value="attachment; filename=myFile.pdf" />
<cfcontent type="application/pdf" variable="#cfhttp.fileContent#" />

Обновление: Динамический пример с использованием временного файла

<cfset tempDir  = getTempDirectory() />
<cfset tempFile = getFileFromPath(getTempFile(tempDir, "testfile")) />

<!--- uncomment to verify paths 
<cfoutput>
    tempDir = #tempDir#<br />
    tempFile = #tempFile#<br />
</cfoutput>
<cfabort />
--->
<cfhttp url="http://download.macromedia.com/pub/documentation/en/coldfusion/mx7/cfmx7_cfml_qref.pdf" 
        method="get" 
        getAsBinary="yes"
        path="#tempDir#" 
        file="#tempFile#" />

<cfheader name="Content-Disposition" value="attachment; filename=myFile.pdf" />
<cfcontent type="application/pdf" file="#tempDir#/#tempFile#" />
0 голосов
/ 27 июля 2011

Насколько я знаю, ваша кодировка в Google Chrome в порядке. В IE выводится сообщение об ошибке. Это связано с тем, что " путь к файлу " не может поддерживать путь URL. Следует использовать путь к каталогу вместо URL-пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...