Forum Webscript.Ru

Программирование => Perl => Тема начата: Lurker от 08 Марта 2003, 13:17:09

Название: Download через перл ??????
Отправлено: Lurker от 08 Марта 2003, 13:17:09
Помогите пожалуйста ....
Нужно сделать скрипт который по паролю с логином бедет позволять скачивать определенный файл как это сделать

Как организовать download файла через скрипт перла ????
Название: Download через перл ??????
Отправлено: Chs от 08 Марта 2003, 20:51:51
Цитировать
Нужно сделать скрипт который по паролю с логином бедет позволять скачивать определенный файл как это сделать
Как организовать download файла через скрипт перла ????

FAQ читаем?
http://wiki.webscript.ru/PerlFAQ
Название: Download через перл ??????
Отправлено: Lurker от 10 Марта 2003, 08:34:54
А как передать содержимое файла ???
Я поставил заголовок но мне возвращаеться пустой файл.....
Название: Download через перл ??????
Отправлено: Mog. от 10 Марта 2003, 10:38:42
Цитировать
Chs:
http://wiki.webscript.ru/PerlFAQ

загнул, ты Chs.
Начинать здесь надо с http://yandex.ru/yandsearch?text=%FF%E7%FB%EA+html
Название: Download через перл ??????
Отправлено: Lurker от 10 Марта 2003, 11:43:28
Большое спасибо Mog.  ты мне так помог !!! 8-/

 Chs я заголовки вставил, но как правильно выдать содержимое этого архива, дай примерчик чтоли......
Название: Download через перл ??????
Отправлено: Mog. от 10 Марта 2003, 13:26:58
Цитировать
Lurker:
Большое спасибо Mog. ты мне так помог !!! 8-/
Ну вот, хоть один поблагодарил :)

Цитировать
Lurker:
дай примерчик чтоли......

В http://wiki.webscript.ru/PFWWWUpload  же, пример лежит, самый, что ни на есть пример. Что непонятного?
Название: Download через перл ??????
Отправлено: Lurker от 10 Марта 2003, 13:43:44
Да мне не Upload нужен ............
А наоборот... запускаеш скрипт а он тебе предлагает сохранить такойто файл (т.б. закачька файла с инета к себе на винт)
Название: Download через перл ??????
Отправлено: Mog. от 10 Марта 2003, 16:21:27
Цитировать
Lurker:
Да мне не Upload нужен ............
А наоборот...
Даунлоад, значит, нужен. Понял :)

Примерно так

#!/usr/bin/perl
use CGI qw( param );
use CGI::Carp qw( fatalsToBrowser );

$name=param(\'name\');
$s_dir="./songs";# каталог где лежат файлы и откуда они будцт скачиваться
if(!$name){&list_files}
&save_file;
sub save_file{ # та часть, которая занимается аплоадом
open(file, "$s_dir/$name");
binmode file;
@xxx=;
$size= -s file;
close file;
print "Content-type: application/octetstream\\n";
print "Content-length: $size\\n";
print "Content-disposition: inline; filename=\\"$name\\"\\n\\n";
for (@xxx){print "$_";}
}

sub list_files{ # формирует список файлов из заданного каталога
opendir (DIR, "$s_dir");
@dir=readdir DIR;
closedir DIR;
print "Content-type: text/html\\n\\n";
for $s(@dir){
if($s!~/(^\\.$)|(^\\.\\.$)/){
@s_f=stat("$s_dir/$s");
$size=sprintf "%.2f",$s_f[7]/1000;
print "Скачать $s ($size Kбайт)
\\n";
}
}
exit;
}

поробуй.
Название: Download через перл ??????
Отправлено: Lurker от 10 Марта 2003, 17:14:24
Вот СПАСИБО !!!!!
помог.......я с этим скриптом уже недлю мудухаюсь....
Спасибо помог!
Название: Download через перл ??????
Отправлено: Chs от 10 Марта 2003, 17:40:39
Mog.
binmode STDOUT
еще рекомендуется.:)
Название: Download через перл ??????
Отправлено: Mog. от 10 Марта 2003, 17:43:43
Цитировать
Chs:
binmode STDOUT
еще рекомендуется
Буду иметь ввиду, спасибо.
Название: Download через перл ??????
Отправлено: Jurik от 12 Марта 2003, 18:58:01
А как сделать, чтобы предлагалось скачать файл, а не сразу открывалось?
Название: Download через перл ??????
Отправлено: mike от 12 Марта 2003, 19:36:46
Цитировать
Jurik:
А как сделать, чтобы предлагалось скачать файл, а не сразу открывалось?

print "Content-type: application/octet-stream\\n";
вместо
print "Content-type: application/octetstream\\n";
Название: Download через перл ??????
Отправлено: Jurik от 12 Марта 2003, 19:41:41
Не работает.
Например, gif-файл сразу открывается в окне Internet Explorer.
Название: Download через перл ??????
Отправлено: Chs от 12 Марта 2003, 21:43:58
Цитировать
Например, gif-файл сразу открывается в окне Internet Explorer

Гребанный IE определяет то, что делать с файлом не по Content-type, а по своей внутренней логике.
А вообще вот так:

print "Content-Type: application/octet-stream\\nContent-Length: ", -s \'download.zip\' ,"\\n";
print "Content-Disposition: attachment; filename=download.zip\\n\\n";
Название: Download через перл ??????
Отправлено: Jurik от 13 Марта 2003, 00:41:18
Скрипт заработал, но не совсем правильно.
Проблема в том, что скрипт сначало закачивает файл, а потом предлагает его сохранить или открыть.
В моем случае это не корректно, по скольку у меня файлы слишком большие.