Какой HTTP-заголовок необходимо вернуть, чтобы веб-браузеры использовали предложенное имя файла? (Загрузка файла из CGI в C) - PullRequest
0 голосов
/ 10 ноября 2010

У нас есть ссылка для скачивания файла PDF на веб-странице с программой CGI на языке C, которая фактически передает файл с веб-сервера нашего встроенного устройства. Веб-сервер имеет пользовательскую кодировку из-за серьезных ограничений памяти.

Рекомендуемое имя файла для программы на C: «Manual.pdf».

В Internet Explorer 8, когда мы нажимаем на ссылку, открывается обычное окно «Открыть / Сохранить» с предложенным именем файла «download.pdf», что неверно. На Firefox предлагаемое имя файла «download.cgi», что хуже. Однако оба браузера правильно указывают, что загружаемый файл имеет тип PDF.

Вот несколько несвязанных фрагментов кода, чтобы показать заголовки, которые мы возвращаем:

{ CONTENT_TYPE_PDF, "application/pdf\nContent-Disposition:attachment;" }
sprintf(tmpBuf, "Content-Type: %s\n", get_tbl_string((tbl_str_itm_t*)content_type, session->response.contenttype));
strcpy(tmpBuf, "filename=Manual.pdf\n");
strcat(tmpBuf, "Cache-Control: no-cache, no-store\n");

Может кто-нибудь сказать, что мы делаем не так?

Любая помощь с благодарностью.

С наилучшими пожеланиями, Bert

Ответы [ 3 ]

3 голосов
/ 10 ноября 2010

Материал "filename" является частью заголовка content-disposition .

2 голосов
/ 10 ноября 2010
Заголовок

Content-Disposition: attachment; filename=Manual.pdf является хорошим решением, однако он не работает, если ваше имя файла содержит не английские символы.Другим решением является добавление пути "/Manual.pdf" к вашему скрипту cgi, то есть используйте URL-адреса, такие как: http://server/path/my.cgi/Manual.pdf, и тогда ваша my.cgi программа будет вызываться с PATH_INFO=/Manual.pdf.Для нестандартных имен файлов это работает лучше, чем заголовок Content-Disposition.

Обновление: Если вы заинтересованы в поддержке браузером заголовка Content-Disposition, отметьте http://greenbytes.de/tech/tc2231/.

Обновление: Еще одна интересная статья на тему: http://blogs.msdn.com/b/ieinternals/archive/2010/06/07/content-disposition-attachment-and-international-unicode-characters.aspx

0 голосов
/ 10 ноября 2010

Вы можете найти некоторые полезные советы здесь:

http://blog.httpwatch.com/2010/03/24/four-tips-for-setting-up-http-file-downloads/

...