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 => ...)
但论据不同。
中的文档
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 对象用作第二个参数的记录方法。
我正在尝试在 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 => ...)
但论据不同。
中的文档 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 对象用作第二个参数的记录方法。