2013-03-06 49 views
1

我得到NULL表單數據值%fdat變量EmbPerl的文件上傳表單屬性enctype="multipart/form-data"獲取表單數據值作爲空在%FDAT變量EmbPerl

這裏是EmbPerl代碼:

if((defined $fdat{file} && $fdat{file}) && $fdat{upload}) 
{ 
     $filename = "/tmp/sample.txt"; 
     open (FILE, "> $filename") || die("open failed: $!"); 
     while (read($fdat{file}, $buffer, 32768)) 
     { 
      print FILE $buffer || die("print test: $!"); 
      close FILE || die("close test: $!"); 
     } 
} 

和HTML代碼是:

<form name="form1" method="post" enctype="multipart/form-data" onsubmit="return validation();"> 
<table> 
    <tr> 
    <td>Select EXCEL sheet</td> 
    <td><input type="file" name="file" value=""></td> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    <td><input type="submit" name="upload" value="upload"></td> 
    </tr> 
</table> 
</form> 

我使用EmbPerl/2.3.0,CGI/3.63,Perl的/ 5.10.1,阿帕奇/ 2.2.22和Linux操作系統。

+0

和你的問題是什麼? – 2013-03-06 12:05:20

+1

你如何填充'%fdat'?什麼是你得到的錯誤信息?你能提供一個小腳本來查明你的錯誤嗎? – dgw 2013-03-06 12:20:26

+1

顯示沒有錯誤,但fdat值變爲空。這是問題 – Futuregeek 2013-03-07 03:01:35

回答

1

我得到了解決。

那是CGI模塊版本的問題。 Embperl在內部使用CGI模塊來處理使用multipart/form-data編碼的表單。你可以檢索的文件名(本地文件名,因爲它是在瀏覽器端)和由CGI.pm uploadInfo功能提供的信息。通過將CGI版本升級到3.37解決了該問題。