Forum Webscript.Ru

Программирование => Perl => Тема начата: Karabas от 11 Апреля 2004, 03:43:26

Название: Передача файла из скрипта , клиенту...
Отправлено: Karabas от 11 Апреля 2004, 03:43:26
Передача файла из скрипта , клиенту...
У меня это делает такой скриптец :

sysopen(FILE, "$file", O_RDONLY);
binmode(FILE);
@sabj = ;
close(FILE);
binmode(STDOUT);
print "Content-Disposition: multipart\\/form-data\\; filename=\\"$name\\" \\n\\n";
print @sabj;


Можнт и по ламерски написано, но всё работает....
Единственное , что мне не нравится, это то что при большом размере файла, скипт его пока прочитает в буфер....
Это жутко грузит сервер....
Может кто знает как переделать, что-б скрипт читал файл по мере его отправки ...

И ещё.....
Как сделать что-б из этого-же скрипта , клиенту отправлялась сначала страничка HTML ( типа предупреждение о посылке файла), а потом сам файл.....
Спасибо....
Название: Передача файла из скрипта , клиенту...
Отправлено: Mog. от 11 Апреля 2004, 14:28:42
1. Как один из вариантов
#!/usr/bin/perl -w
use strict;
my $file="doc.zip";
print "Content-type: application/octetstream\\n";
print "Content-length: ",-s $file,"\\n";
print "Content-disposition: inline; filename=\\"",$file,"\\"\\n\\n";
open(FILE, "$file");
binmode FILE;
binmode(STDOUT);
while(read(FILE, my $data, 1024)){print $data}
close FILE;

2. Перлом, по моему, никак
Название: Передача файла из скрипта , клиенту...
Отправлено: Karabas от 11 Апреля 2004, 15:42:47
Спасибо большое....
Классно заработал такой вариант.....

sysopen(FILE, "$file", O_RDONLY);
print "Content-Disposition: multipart\\/form-data\\; filename=\\"$name\\" \\n\\n";
binmode FILE;
binmode(STDOUT);
while(read(FILE, my $data, 1024)){print $data}
close FILE;

Теперь даже большие файлы уходят легко и просто с небольшой загрузкой системы, ведь скорость чтения с харада намного больше скорости передачи..... :)
:)
Название: Передача файла из скрипта , клиенту...
Отправлено: Mog. от 11 Апреля 2004, 16:59:21
Цитировать
Karabas:
multipart\\/form-data\\;
Э... Грешным делом, всегда думал, что это дело для наоборот клиент->сервер.
Название: Передача файла из скрипта , клиенту...
Отправлено: Karabas от 11 Апреля 2004, 21:02:42
Mog.
Цитировать
Mog.:
Э... Грешным делом, всегда думал, что это дело для наоборот клиент->сервер.

Э...э...э, а какая разница в каком направлении данные идут....? :(
Название: Передача файла из скрипта , клиенту...
Отправлено: Mog. от 12 Апреля 2004, 08:28:44
Karabas! Э... может ты и прав :)
Название: Передача файла из скрипта , клиенту...
Отправлено: NeoNox от 12 Апреля 2004, 18:00:09
Цитировать
Karabas:
Как сделать что-б из этого-же скрипта , клиенту отправлялась сначала страничка HTML ( типа предупреждение о посылке файла), а потом сам файл.....

посылается страница в которой есть рефреш с путем к файлу.
Название: Передача файла из скрипта , клиенту...
Отправлено: Karabas от 13 Апреля 2004, 00:43:02
NeoNox
Да.... наверное только так и получится.... :(
Придётся пол дописывать :) , чтоб делал рефреш сам на себя...
И при втором заходе уже слал файл ...
Название: Передача файла из скрипта , клиенту...
Отправлено: Mog. от 13 Апреля 2004, 08:39:45
Цитировать
Karabas:
предупреждение о посылке файла
А какой смысл в этом?
Название: Передача файла из скрипта , клиенту...
Отправлено: Karabas от 14 Апреля 2004, 03:51:26
Mog.
.... ну... незнаю.... симпатичней... :)