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


Автор: aksined 26.5.2006, 22:16
Есть файлы в базе. Они неким образом отображаются на странице.
Пользователь имеет возможность указать те из них, которые ему нужны.
Они пакуются в архив и выдаются ему взад.

Вопрос.
Все из перечисленнго сделать смог.
Проблема в том, диалог при сохранении загружемого файла не содержит расширения
что для к\онечного пользоваателя неудобно - каждый раз вводить .zip
 

Автор: korob2001 27.5.2006, 08:32
А переименовать не пробовал?
Код
my $file = "archive";
rename($file,"$file.zip");

Если выдаёшь архив из памяти, то попробуй выдавать его с таким заголовком:
Код
print "Content-Disposition: filename=$file.zip \n";
  

Автор: Usya 27.5.2006, 11:33
Можно сделать, как сказал korob2001, но кажется здесь и проще можно, хотя надо видеть код.
Ведь перед тем как паковаться имя файла скорее всего заносится в какую-нибудь переменную, например, $file.
А дальше $file.='.zip' и можно паковать.
Но опять же - надо видеть код.
 smile  

Автор: aksined 27.5.2006, 13:24
Спасибо за ответы
Переименовать 
Цитата
А переименовать не пробовал?
 - стеб забавный. я же написал, что создается файл динамически.

Вот второй вариант подходит. Правда проверить смогу только через неделю на работе. 

Извиняюсь, что не привел код, просто писал его давно и сейчас нет перед глазами. По памяти выходит так:
Код

use Archive::Zip;
my $q = Archive::Zip->new();
for($cgi->param(param)){
  $q->AddMember($_) || die;
}
$q->WriteToFileHandle(STDOUT);


Спасибо Korob за Content-Disposition,  я, по наивности, думал, что достаточно Content-Type 

Автор: aksined 7.6.2006, 18:58
Korob, спасибо большое
все стало хорошо после добавления в http-заголовок строки о Disposition 

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