URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7857
[ Назад ]

Исходное сообщение
"Как CGI-скрипту указать имя возвращаемого архива"

Отправлено Саша , 09-Апр-14 21:28 
Здравствуйте,

Кратко вопрос звучит так:
может ли CGI-скрипт вернуть вместе с данными, имя этих данных?

Более подробно лучше на примере:

1) Есть HTML-страница, на которой отображён список файлов.
2) Возле каждого файла есть чекбокс, позволяющий отметить файл
3) Есть кнопки
3.1) Удалить - удаляет выбранные файлы
3.2) Скачать - пакует в архив выделенные файлы и возвращает архив

Я это реализую следующим образом:
1) Список файлов с чекбоксами и кнопками я располагаю в одну форму и в action этой формы указываю имя скрипта, допустим FileMgr
2) Скрипт FileMgr в зависимости от выбранных чекбоксов и типа кнопки:
2.1) удаляет выбранные файлы и возвращает ту же HTML-страницу, только уже без удалённых файлов
2.1) пакует выбранные файлы zip-ом и возвращает полученный архив в виде потока данных, указав Content-type: aplication/zip

Проблемма в (2.1):
При возврате архива браузеры восновном предлагают сохранить файл, и в качестве имени файла предлагают:
1) в лучшем случае имя_скрипта.zip
2) просто имя_скрипта
3) имя_скрипта_ещё_что-то
Т.е. имя не очень хорошее и пользователь вынужден его править.
Выходом является назвать скрипт сразу с расширением zip, но ведь этот скрипт выполняет не только возвращение архива, но и другую работу и с расширением zip будет иметь нелогичное имя.
Как можно решить данную проблемму?


Содержание

Сообщения в этом обсуждении
"Как CGI-скрипту указать имя возвращаемого архива"
Отправлено parad , 09-Апр-14 22:30 
Заголовком:
Content-Disposition:attachment;filename=name.txt;

"Как CGI-скрипту указать имя возвращаемого архива"
Отправлено Саша , 11-Апр-14 15:50 
> Заголовком:
> Content-Disposition:attachment;filename=name.txt;

Спасибо за наводку!!! И оперативные ответ!
Правда с первого раза не получилось. После чего нашёл статью http://gordievskiy.blogspot.com/2009/12/content-disposition-...

PS: Эх жаль что несколько лет назад я так и не нашёл ответ и приходилось извращаться через называние скрипта нужным именем с расширением zip, но тогда скрипт только и занимался, что возвращением архива, а теперь задача усложнилась и снова встал вопрос.
Причём Content-Disposition я уже использовал, когда читал входные данные, а вот что он может использоваться и в ВЫХОДНЫХ - не знал.


"Как CGI-скрипту указать имя возвращаемого архива"
Отправлено Pahanivo , 11-Апр-14 16:34 
> PS: Эх жаль что несколько лет назад я так и не нашёл
> ответ и приходилось извращаться через называние скрипта нужным именем с расширением
> zip, но тогда скрипт только и занимался, что возвращением архива, а
> теперь задача усложнилась и снова встал вопрос.
> Причём Content-Disposition я уже использовал, когда читал входные данные, а вот что
> он может использоваться и в ВЫХОДНЫХ - не знал.

тяжко жить пока гугл не освоишь )))