Perl使用HTTP :: Request上传文件

Moh*_*uri 4 perl post

我正在使用现有的框架来自动化一些api.该框架使用HTTP :: Request模块.我需要编写一个脚本来上传文件.我可以使用HTTP :: Request :: Common模块,但不能使用Http :: Request模块.但我只需要使用Http :: Request来完成这项工作.代码片段下方:

使用HTTP :: Request :: Common\This Works

    $request = POST $uri,
    Content_Type => 'multipart/form-data',
    Content => [
    file => [$file]
    ]
    ;
    my $results=$ua->request($request ) ;
Run Code Online (Sandbox Code Playgroud)

使用HTTP :: Request \这不起作用,我得到一个错误丢失文件

    my $req = HTTP::Request->new("POST", $uri );
    $req->header(Content_Type => "form-data");
    $req->content('file=>$file');
    my $res = $ua->request($req);
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我在上面的代码中我做错了什么吗?

Bri*_*ips 6

不幸的是,这个POST方法还有很多东西,而不仅仅是包装一个HTTP::Request对象的构造函数(参见这里).至少包括以下内容(通过快速扫描代码):

  • 将Content-Type标头修改multipart/form-data为随机,boundary以指示文件数据在请求中的开始位置
  • 将Content-Disposition标头设置为适当的值
  • 读取文件并将文件内容存储在请求体中

我强烈建议不要手动完成上述所有操作,但很难知道您的确切约束以及无法使用的原因HTTP::Request::Common.