Загрузка запроса Catalyst - усечение файлов - PullRequest
2 голосов
/ 07 ноября 2011

Я использую Catalyst Request Upload для загрузки файлов с помощью апплета Jumploader на внешнем интерфейсе. Все хорошо для файлов до 10k или около того. Но если файлы больше, я получаю только последний загруженный «чанк». Используя Data::Dumper, я вижу, как загружаются «10k бит», и каждый фрагмент помещается в случайный временный каталог. У меня вопрос, как загрузить весь файл и не разбить его?

if ( my $upload = $c->request->upload('file') ) { 
    my $filename = $upload->filename;
    $target = "$file_path/$campaign/$filename";
    unless ( $upload->link_to($target) || $upload->copy_to($target) ) { 
        die( "Failed to copy '$filename' to '$target': $!" );
    }   
}

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 20 апреля 2013

По умолчанию при загрузке в катализаторе (выполняется Catalyst :: Request :: Upload) считывается содержимое, отправленное с HTTP, и они сохраняются в файл tmp.

$c->request->upload('file') 

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

Вы можете запустить сервер с "-d" или экспортировать CATALYST_DEBUG=1 env.Затем отправьте один большой файл и посмотрите количество запросов, которые были сделаны к катализатору.

Если их больше одного, Jumploader может отправить что-то вместе с запросом, например, «загрузить идентификатор файла», чтобы сделать возможнымВы склеиваете все кусочки.

...