Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在perl中上载多个文件?_Perl_Cgi_Fastcgi_Perl Module_Mod Perl - Fatal编程技术网

如何在perl中上载多个文件?

如何在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 cgi上传多个文件。 我使用表单类型作为

enctype=“多部分/表单数据” 而且还设置了 输入类型文件中的multiple='multiple'

只需要知道我们应该在服务器端写些什么


有谁能告诉我如何使用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";