簡體   English   中英

如何在perl中上傳多個文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM