我有一个PHP数组,其中包含字节,实际字节代表一个ZIP文件(其中包含ZIP中的多个文件)。PHP的字节数组到Zip文件
这是从第三方API返回的,所以我别无选择,只能使用此格式。
所以我想把它转换成ZIP文件。字节数组的
例通过API返回:
[bytes] => Array
(
[0] => 37
[1] => 80
[2] => 68
[3] => 70
[4] => 45
[5] => 49
[6] => -46
... continues to close to 20,000
)
我试图仅仅让浏览器通过创建一个完整的字节串,并适应浏览器标题...返回它:
foreach($bytes as $byte)
{
$byteString .= $byte;
}
header("Content-type: application/zip");
header("Content-Disposition: inline; filename='test.zip'");
echo $byteString;
这确实会创建一个zip文件,但它无效/损坏。
我也试过这个,我发现其他地方#2:
$fp = fopen('/myfile.zip', 'wb+');
while(!empty($bytes)) {
$byte1 = array_shift($bytes);
$byte2 = array_shift($bytes);
if(!$byte2) {
$byte2 = 0;
}
fwrite($fp, pack("n*", ($byte1 << 8) + $byte2));
}
close($fp);
但同样,在创建ZIP,但它是无效的/损坏。
任何指针,最感谢。
感谢
它似乎极有可能使用此API错误。 – 2016-08-24 00:48:38
“看起来你使用这个API的可能性很大。” - 不,我希望我能想到!这是一个自定义的API,这确实是如何设置的。 – user1513196