催化剂请求上载 - 截断文件

时间:2011-11-07 14:56:55

标签: perl upload request catalyst

我正在使用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 个答案:

答案 0 :(得分:1)

默认情况下,催化剂上传(由Catalyst :: Request :: Upload完成)读取从HTTP发送的内容并保存到tmp文件。

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

也许Jumploader正在发送包含多个HTTP请求的更大文件。所以你需要调试才能看到发生了什么。

您可以使用“-d”启动服务器或导出CATALYST_DEBUG=1 env。然后发送一个大文件,看看对催化剂做的请求数量。

如果它不止一个,Jumploader可能会发送带有请求的内容,例如“上传文件ID”,以便将所有部分粘合在一起。