Perl 发布请求以 base64 格式发送 zip 文件?

标签 perl lwp

我有一个 Perl 脚本试图通过 LWP UserAgent 模块发送一个 zip 文件

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

其中 $fname 是文件的路径。在服务器端,虽然我的 POST 数组似乎只有“提交”。 我应该对文件进行 base64 编码并将其分配给变量吗?执行此操作的最佳方法是什么?

最佳答案

确保文件名可以解析。但是,如果不能,您应该得到一个错误。至少在我的 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;

关于Perl 发布请求以 base64 格式发送 zip 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5885893/

相关文章:

mysql - 将 Perl SQL 查询的输出保存到散列而不是数组

MacOS:两个 Perl 安装: "Dumper.c: loadable library and perl binaries are mismatched"

perl - 如何美化 Perl 生成的 Perl 代码?

regex - 等待 CloudFlare DDOS 保护 LWP Perl

perl - wget 与 Perl 的 lwp 有何不同?

perl - 像主机文件一样覆盖特定域的 DNS,但不使用主机文件

perl - 如何使用perl发送短信?

linux - 通过 SSH 传递脚本和字符串

Perl,LWP "certificate verify failed"与 paypal.com

perl - 为什么 LWP::UserAgent 不能完全获取这个站点?