Perl发布请求将zip文件作为base64发送?

时间:2011-05-04 15:27:32

标签: perl lwp

我有一个Perl脚本尝试使用LWP UserAgent模块发送一个zip文件

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

其中$ fname是文件的路径。在服务器端虽然看起来我的POST阵列只有“提交”。 我应该base64编码文件并将其分配给变量吗?最好的方法是什么?

1 个答案:

答案 0 :(得分: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;