如何在perl中上载多个文件?
我需要使用perl cgi上传多个文件。 我使用表单类型作为 enctype=“多部分/表单数据” 而且还设置了 输入类型文件中的multiple='multiple' 只需要知道我们应该在服务器端写些什么如何在perl中上载多个文件?,perl,cgi,fastcgi,perl-module,mod-perl,Perl,Cgi,Fastcgi,Perl Module,Mod Perl,我需要使用perl cgi上传多个文件。 我使用表单类型作为 enctype=“多部分/表单数据” 而且还设置了 输入类型文件中的multiple='multiple' 只需要知道我们应该在服务器端写些什么 有谁能告诉我如何使用perl上传多个文件吗?在服务器端,您首先像这样检索文件句柄: use CGI; my $q = CGI->new(); my $myfh = $q->upload('field_name'); 现在,您有了文件上载到的临时存储的文件句柄 可以使用pa
有谁能告诉我如何使用perl上传多个文件吗?在服务器端,您首先像这样检索文件句柄:
use CGI;
my $q = CGI->new();
my $myfh = $q->upload('field_name');
现在,您有了文件上载到的临时存储的文件句柄
可以使用param()方法获取上载的文件anme
临时文件可通过以下方式直接访问:
$filename = $query->param('uploaded_file');
$tmpfilename = $query->tmpFileName($filename);
我强烈建议您多次仔细阅读文档。虽然不是琐碎的事情,但它非常简单。类似的内容应该可以处理多个文件上传:
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”是文件上载表单的名称。以下代码就足够了,可以将参数中的文件上载到/存储位置:
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";
使用CGI;
my$cgi=新cgi;
my@files=$cgi->param('multi_files[]);
my@io_handles=$cgi->upload('multi_files[]);
foreach my$upload(@files){
打印“文件名:$upload
”;
我的$file\u temp\u path=“/storage”;
my$upload\u file=shift@io\u句柄;
打开(上传文件“>$file\u temp\u path/$upload”)或打印“文件打开错误”;
二进制上传文件;
而(){
打印上传文件;
}
}
打印“文件上传完成”;
您是在询问如何在HTTP请求中包含文件,还是如何在CGI脚本中接收文件?未经编辑的帖子说“需要知道我们应该在服务器端写些什么”可能重复的
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";