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

时间:2014-03-06 13:54:04

标签: perl cgi fastcgi perl-module mod-perl

我需要使用perl cgi上传多个文件。 我使用表单类型

  

ENCTYPE =“多部分/格式数据   并设定    输入类型文件中的multiple ='multiple'。

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

有人可以告诉我如何使用perl上传多个文件吗?

3 个答案:

答案 0 :(得分:1)

下面的代码就足够了,并将参数中存在的文件上传到/ storage位置:

sqlite> SELECT time_secs, session, metric_1, metric_1_likelihood, metric_2, metric_2_likelihood FROM full_ts LIMIT 10;
time_secs   session     metric_1            metric_1_likelihood  metric_2           metric_2_likelihood
----------  ----------  ------------------  -------------------  -----------------  -------------------
1572522600  session_0   0.0698785211320749  0.424853512805612    0.494699869796956  0.962915383990865  
1572522900  session_0   0.760571893135022   0.294675049990505    0.580396389327591  0.934424555702509  
1572523200  session_0   0.629603845787639   0.806491332113479    0.16589472228813   0.963243379341578  
1572523500  session_0   0.0571856086488497  0.605895821260498    0.910067195100557  0.480348834963859  
1572523800  session_0   0.840306423849594   0.54489589788877     0.352571588765252  0.160847342139792  
1572524100  session_0   0.681384243040651   0.528022904478869    0.047929896649995  0.572242594863986  
1572524400  session_0   0.349861113535551   0.788712196665348    0.010245146069704  0.548463092362831  
1572524700  session_0   0.150289974958309   0.511662214212664    0.60765291353699   0.178207027680503  
1572525000  session_0   0.495015984152799   0.0217641427448981   0.564055630347545  0.652345164013304  
1572525300  session_0   0.608194881163176   0.065551216982212    0.938749939090523  0.682270932390147  
sqlite> 

答案 1 :(得分:0)

在服务器端,首先要检索文件文件句柄,如下所示:

 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个文档一个很好的读取。虽然不是微不足道的,但这一切都很简单。

答案 2 :(得分:0)

这样的事情应该处理多个文件上传:

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'是文件上传表单的名称。