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


Автор: gcc 17.10.2009, 08:21
хочу закачать файл(ы) из форм HTML (картинки закачать)

есть  http://search.cpan.org/~flora/Catalyst-Runtime-5.80013/lib/Catalyst/Request/Upload.pm

Код

    my $upload = $c->req->upload('field');


но как поставить чтобы был определенный возможный максимальный размер?

тут вот есть метод     $upload->size; но он проверяет размер, после того как файл закачался?

как ограничить максимальный размер загружаемого файла? 

Автор: Itsys 17.10.2009, 08:56
Не знаю, как в Catalyst, но при использовании CGI можно установить переменную, которая ограничивает максимальный размер:
Код

$CGI::POST_MAX

Автор: sir_nuf_nuf 17.10.2009, 16:22
Каталист наверняка для таких целей использует переменные нижележащей технологии.
Так что читайте как это сделать в mod_perl.

Автор: gcc 17.10.2009, 21:59
я нашел, но не знаю куда это поставить в каталист

(мне нужно на одной странице ограничить до 1М, на другой - больше 1М)

вот не могу найти http://www.google.com.ua/#hl=uk&q=POST_MAX++catalyst&meta=&fp=71571743260a290a

Цитата



If you are using CGI.pm, you can set the maximum allowed POSTsize and disable file uploads using the following setting:
 
    use CGI;
    $CGI::POST_MAX = 1048576;  # max 1MB allowed
    $CGI::DISABLE_UPLOADS = 1; # disable file uploads
 
The above setting will reject all submitted forms whose total size exceeds 1 MB. Only non-file upload inputs will be processed.
 
If you are using the Apache::Request module, you can disable file uploads and limit the maximum POSTsize by passing the appropriate arguments to the new( ) function. The following example has the same effect as the CGI.pm example shown above:
 
    my $apr = Apache::Request->new($r,  
                                   POST_MAX        => 1048576,
                                   DISABLE_UPLOADS => 1
                                  );
 
Another alternative is to use the LimitRequestBody directive in httpd.conf to limit the size of the request body. This directive can be set per-server, per-directory, per-file, or per-location. The default value is 0, which means unlimited. As an example, to limit the size of the request body to 2 MB, you should add:
 
    LimitRequestBody 2097152
 
The value is set in bytes (2097152 bytes = = 2 MB).
 
In this section, we have presented only a single example among many that can cause your server to use more memory than planned. It helps to keep an open mind and to explore what other things a creative user might try to do with your service. Don't assume users will only click where you intend them to.
 
 

 

Автор: gcc 18.10.2009, 01:23
а подскажите где в Catalyst  Apache::Request?

не могу его найти...

Автор: DEER 18.10.2009, 11:45
Там свой Request вроде 

Автор: mvsgt 19.10.2009, 13:53
Я где-то читал, что Moose в принципе не всегда может работать с mod_perl - может быть, и не стоит заморачиваться, fastcgi проще ?

Автор: gcc 19.10.2009, 17:18
ну у меня сейчас работает версия 5.80 которая с moose в mod_perl, работает хорошо...

может исключительно на httpd.con надо ограничить...

Автор: gcc 16.12.2009, 09:22
нашел  LimitRequestBody 5000000
в httpd.conf или .htaccess по-моиму, тоже

НО если нужно ограничть для картинок 5Мб, а для видео 300Мб??

я вижу один вариант: разрешить закачивать картинку в 300Мб, после того как закачалась, посмотреть если она больше чем 5Мб, то удалить

ради интереса, может быть есть другой вариант или на другом веб-сервере?

Автор: gcc 16.12.2009, 11:24
UPD: можно добавить домен photo.mysdomain.com и туда отуда загрузить с конкретным LimitRequestBody smile вроде бы это сработает....

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