2011-05-04 58 views
3

我有一个Perl脚本试图发送一个压缩文件,像这样用LWP用户代理模块Perl请求发送zip文件为base64?

my $req = POST $url, Content_Type => 'form-data', 
    Content  => [ 
     submit => 1, 
     upfile => [ $fname ] 
    ]; 

其中$ FNAME是文件的路径。在服务器端,虽然看起来我的POST数组只有“提交”。 我应该base64编码文件并将其分配给一个变量?什么是最好的方法来做到这一点?

+0

请发表你的服务器端脚本的代码,我没有看到上面的代码的问题,所以我怀疑你没有正确拾取文件数据。 – Roger 2011-05-04 15:52:11

回答

2

确保可以解析文件名。尽管如此,你应该得到一个错误。至少我在我的版本HTTP::Request::Common

您不必将二进制内容编码为Base64。 (当然,除非,服务器端应用程序恰好期望的格式。)

下面是一个完整的示例脚本:

use strict; 
use warnings; 
use LWP::UserAgent; 
use HTTP::Request::Common 'POST'; 

my $ua = LWP::UserAgent->new; 
my $url = 'http://localhost:8888'; # Fiddler 
my $req = POST $url, 
    Content_Type => 'form-data', 
    Content => [ 
     submit => 1, 
     upfile => [ 'C:\temp\bla.zip' ], 
    ]; 
my $line = '=' x 78 . "\n"; 
print $line, $req->as_string; 
my $rsp = $ua->request($req); 
print $line, $rsp->as_string; 
+0

啊我看到我期待该文件被提交到$ _POST数组中,所以当我没有看到它时我认为出了什么问题,我刚刚在$ _FILES ARRAY中意识到它,谢谢! – user391986 2011-05-04 21:24:25