2015-03-08 104 views
-1

我有perl cgi腳本,我有上傳文件的窗體。 一切工作正常,但我有一些控制(檢查我的SQL表)用戶選擇文件後,如果具有相同名稱的文件已經存在。 如果存在,我打印javascript確認詢問用戶是否要替換舊文件。 而我不知道如何將文件句柄傳遞給腳本。我upload.pl代碼:perl cgi傳遞文件句柄

my $query = new CGI; 
my $file = $query->param("file"); 
my $confirm = $query->param("confirm"); 
my $name = $query->param("name"); 

if(!$confirm){ 
    SQL check 
    if(SQL check){ 
    print "Content-type: text/html\n\n"; 
    print "<form action=\"upload.pl\" method=post name=\"upload.pl\"> 
     <input type=\"hidden\" name=\"file\" value=\"$file\"> 
     <input type=\"hidden\" name=\"confirm\" value=\"true\"> 
     <input type=\"hidden\" name=\"name\" value=\"$name\"> 
    </form> 
    <form action=\"index.pl\" method=GET name=\"index.pl\"> 
     <input type=\"hidden\" name=\"login\" value=\"$login\"> 
     <input type=\"hidden\" name=\"token\" value=\"$token\"> 
    </form> 
    <script> 
     var answer = confirm(\"WARNING .....\"); 
     if (answer==true){ 
     document.forms[\"upload.pl\"].submit(); 
     } 
     else{ 
     document.forms[\"index.pl\"].submit();    
     } 
    </script> 
    "; 
    exit; 
    } 
} 

所以用戶後確認,他想要替換的文件我第一次提交表單,然後再次運行upload.pl但是當我嘗試

my $upload_filehandle = $query->upload("file"); 

它沒有返回。

有沒有辦法通過文件句柄? 還是沒有javascript確認和其他提交腳本的其他方式?

感謝您的任何建議。

回答

0
$query->upload("file") 

用於文件類型輸入(例如<input type="file" name="file">)。對於其他類型的輸入,使用

$query->param("file") 

如果你想能夠從文件中讀取處理由$query->param("file")返回的值,你可以使用

open(my $fh, '<', \$query->param("file"))