[英]How to upload multiple files in perl?
我需要使用 perl cgi 上传多个文件。 我使用表单类型作为
enctype="multipart/form-data 并在输入类型文件中设置 multiple='multiple'。
只需要知道我们应该在服务器端写什么?
谁能告诉我如何使用perl上传多个文件?
在服务器端,您首先像这样检索文件文件句柄:
use CGI;
my $q = CGI->new();
my $myfh = $q->upload('field_name');
现在您有一个文件句柄到文件上传的临时存储。
可以使用 param() 方法获得上传的文件名称。
$filename = $q->param('field_name');
并且可以通过以下方式直接访问临时文件:
$filename = $query->param('uploaded_file');
$tmpfilename = $query->tmpFileName($filename);
我强烈建议给CGI.pm文档好好读几遍。 虽然不是微不足道,但一切都相当简单。
这样的事情应该处理多个文件上传:
my @fhs = $Cgi->upload('files');
foreach my $fh (@fhs) {
if (defined $fh) {
my $type = $Cgi->uploadInfo($fh)->{'Content-Type'};
next unless ($type eq "image/jpeg");
my $io_handle = $fh->handle;
open (OUTFILE,'>>','/var/directory/'.$fh);
while (my $bytesread = $io_handle->read(my $buffer, 1024)) {
print OUTFILE $buffer;
}
close (OUTFILE);
}
}
Ofc 'files' 是文件上传表单的名称。
以下代码就足够了,并将参数中存在的文件上传到 /storage 位置:
use CGI;
my $cgi = new CGI;
my @files = $cgi->param('multi_files[]');
my @io_handles=$cgi->upload('multi_files[]');
foreach my $upload(@files){
print "Filename: $upload<br>";
my $file_temp_path = "/storage";
my $upload_file = shift @io_handles;
open (UPLOADFILE,">$file_temp_path/$upload") or print "File Open Error";
binmode UPLOADFILE;
while (<$upload_file>) {
print UPLOADFILE;
}
}
print "Files Upload done";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.