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


Автор: Lektor 12.4.2009, 23:28
Ребята, помогите пожалуйста своять скрипт.

Клиент через форму загружает файл на сервер, нужно следующее: чтоб на серв загружалось только n мбайт и потом загрузка(передача) 
прекращалась.

Например юзер шлет 10 мбайт файл, он заливается на сервер, как только 5 мб загрузилось, загрузка прекращается.
Я тут набросал:

Код

use CGI qw(:standard);  
use File::Temp qw(:POSIX);  
 
 
my $fh = tmpfile(); #дескриптор временного файла  
my $cgi = CGI->new(\&hook); #устанавливаем функцию обработчик на приходящий  файл  
my $remote = $cgi->param("video"); #получаем имя файла который отправляет пользователь, имя может пригодиться  
 
close $fh; 
 
    sub hook 
    { 
            my ($filename, $buffer, $bytes_read, $data) = @_; 
        open (OUTFILE,">>d:/temp2/".$filename); 
        binmode OUTFILE; 
        if ($bytes_read < 1048576) { 
            print OUTFILE $buffer; 
        }else{ 
                                     ## как бы дропнуть передачу файла . 
                                      exit; 
        } 
 
    } 
 

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

я полагаю надо смотреть в сторону http://httpd.apache.org/apreq/docs/libapreq2/group__apreq__xs__apr__request.html#disable_uploads но сам не справлюсь ... 
я на перле вообще не пишу.. пишу на пхп, но он тут не справляется с задачей поэтому хочу эту форму обработать перл скриптом ...

Автор: gcc 12.4.2009, 23:41
Код

 $CGI::POST_MAX = 262144; 



Код

system("kill -9 $$");


Автор: Lektor 13.4.2009, 01:21
ну ... это как гвозди миксером забивать )

постараюсь найти что-то поэлегантней ...

Автор: Lektor 13.4.2009, 13:13
Ребята, а может кто обьяснить как работает (на примере)

http://httpd.apache.org/apreq/docs/libapreq2/group__apreq__xs__apr__request.html#disable_uploads
Код

$req->disable_uploads()

Цитата

Engage the disable_uploads hook for this request.


а то в доке два слова тока написано ..

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