Perl HTTP::Request 文件上传忽略 Headers

Perl HTTP::Request with File Upload ignores Headers

我正在尝试在 Perl 中使用 'form-data' 的 Content-Type 和 HTTP::Request.

上传文件

代码如下所示:

$request = POST $URL,
                $headers,
                Content_Type => 'form-data',
                Content => [
                  'filename' => $args->{ formData }->{ filename },
                  'options'  => $args->{ formData }->{ options }
                ];

$headers 是使用以下方法构建的:

my $headers = HTTP::Headers->new();
while ( my ( $name, $value ) = each %{ $args->{ headers } } ) {
    $headers->header( $name, $value );
}

当调用其他不通过此调用进行文件上传的东西时,这是完美的工作:

$request = HTTP::Request->new( 'POST', $uri, $headers );

当我查看文件上传调用的输出时,它没有任何 header 信息,除了:

Content-Length: 918
Content-Type: multipart/form-data; boundary=xYzZY

但是,还有另一个值集应该在那里。

如果我删除“$headers”,输出是相同的。我也试过使用

HEADERS => $headers,

但这只会产生一个 header,其键为 HEADERS,值为 HASH(0x.......)

我也试过添加

X-key-name => $value,

但这会出错。用引号将键括起来不会将其添加到 headers.

在过去的几个小时里,我一直在徒劳地寻找一个示例,其中 POST 完成并包含文件上传和 headers。

我运行没主意了。

请注意

 HTTP::Request::Common::POST(...)

不一样
HTTP::Request->new(POST => ...)

但论据不同。

根据 HTTP::Request::Common

中的文档
   POST $url
   POST $url, Header => Value,...
   POST $url, $form_ref, Header => Value,...
   POST $url, Header => Value,..., Content => $form_ref
   POST $url, Header => Value,..., Content => $content

没有将 HTTP::Headers 对象用作第二个参数的记录方法。