Perl上传文件使用HTTP ::请求
问题描述:
我正在使用现有的框架来自动化一些apis。 该框架使用HTTP :: Request模块。我需要编写一个脚本来上传文件。 我可以使用HTTP :: Request :: Common模块,但使用Http :: Request模块的NOT。 但我需要使用Http :: Request才能完成此操作。 下面的代码片段:Perl上传文件使用HTTP ::请求
使用HTTP ::支持:: COMMON \这个作品
$request = POST $uri,
Content_Type => 'multipart/form-data',
Content => [
file => [$file]
]
;
my $results=$ua->request($request) ;
使用HTTP ::请求\这是不行的,我得到一个错误丢失的文件
my $req = HTTP::Request->new("POST", $uri);
$req->header(Content_Type => "form-data");
$req->content('file=>$file');
my $res = $ua->request($req);
有人可以告诉我我在做什么错误在上面的代码?
答
不幸的是,在POST
方法中还有很多事情要比包装HTTP::Request
对象的构造函数(请参阅here)。至少包括(通过代码从快速扫描)执行以下操作:
- 修改所述Content-Type头是
multipart/form-data
与随机boundary
到indcate该文件数据在所述请求 - 开始设定内容-Disposition头到合适的值
- 读取文件并存储在请求主体
我会强烈建议不要试图做所有手动以上的文件的内容,但它是很难知道你的Ë xact约束以及为什么你不能使用HTTP::Request::Common
。