我正在使用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': $!" );
}
}
感谢您的帮助。
答案 0 :(得分:1)
默认情况下,催化剂上传(由Catalyst :: Request :: Upload完成)读取从HTTP发送的内容并保存到tmp文件。
$c->request->upload('file')
也许Jumploader正在发送包含多个HTTP请求的更大文件。所以你需要调试才能看到发生了什么。
您可以使用“-d”启动服务器或导出CATALYST_DEBUG=1
env。然后发送一个大文件,看看对催化剂做的请求数量。
如果它不止一个,Jumploader可能会发送带有请求的内容,例如“上传文件ID”,以便将所有部分粘合在一起。