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