Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > имя файла при отдаче его скриптом браузеру


Автор: aleron 24.8.2011, 18:11
добрый день.

отдаю картинку браузеру перл скриптом:

Код

print "Content-type: image/jpeg\n\n";
open (F, "image.jpg") || die;
  while(my $s=<F>) {
     print $s;
  }
close(F);


в ьраузере(FF), при попытке сохранить картинку на диск, предлагается сохранить её по имени скрипта "get.cgi.jpeg".
вопрос. можно ли  и как, если можно, подсунуть браузеру название картинки -  image.jpg?

заранее спасибо за ответ

Автор: aleron 25.8.2011, 14:12
эмм... задача не имеет решения? или наоборот, настолько тривиальна, что отвечать нет смысла?) или я не в том разделе запостил?

ps

ага, как минимум не в том разделе запостил, решение лежит в области хттп заголовков...

Автор: DurRandir 25.8.2011, 16:12
Смотрите в сторону Content-Disposition.

PS: я бы считал такой способ очень неудачным для отдачи файлов.

Автор: aleron 25.8.2011, 17:12
>PS: я бы считал такой способ очень неудачным для отдачи файлов. 
а можно спросить почему?

Автор: DurRandir 25.8.2011, 17:59
Общее - распухает память процесса, если надо отдать большой файл, ну и есть более эффективные способы отдачи файлов с диска напрямую. Если снаружи апач - то он умеет sendfile, начиная с каких-то версий. Если снаружи nginx - можно отдать X-Accel-Redirect, и он дальше сам заберёт и отдаст его с диска с нужными заголовками.

Ещё вспомнил - вы же не отдаёте никаких expires/etag, поэтому никакие условные запросы работать не будут (что могло бы сэкономить трафик).

Автор: aleron 26.8.2011, 17:31
спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)