2

Transfer-Encoding: chunked用来编写 HTTP 响应。

响应通过以下方式分成几部分:

my $template = "a$buffer_size" x int(length($response)/$buffer_size) . 'a*';

foreach my $buffer (unpack $template, $response){
    ...
}

当内容类型为 时,这可以正常工作text/html,但它会破坏二进制数据,例如application/pdf.

unpack用于将二进制数据分成相等的长度?

4

2 回答 2

1

仍然不确定为什么unpack在这种情况下会失败,但我偶然发现了一个解决方案。

如果我使用内存文件操作响应,则unpack可以正常工作:

my $resp;
open (my $fh, '>', \$resp);
my $fh_old = select($fh);
print $response;
close $fh;
select($fh_old);
$response = $resp;

任何洞察为什么这有效?

于 2012-06-01T19:45:52.713 回答
0

这对二进制数据非常有效。问题在别处。(你们binmode都处理好了吗?)

于 2012-06-01T16:32:34.990 回答