2013-03-06 48 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解决了该问题。