[英]Save byte array to a file PHP
我一直无法找到使用 PHP 的解决方案。 基本上,当用户单击“下载 PDF”链接时,它会调用一个 PHP 函数,该函数接受一个字节数组并将其解析为 PDF。 我不知道该怎么做。 任何帮助都会很棒!
编辑:我得到这样的“字节数组”:
<?php
$userPDF = $_POST['username'];
$passPDF = $_POST['password'];
$idPDF = 'MO-N007175A';
//PDF Function
$data = array("id" => $idPDF, "username" => $userPDF, "password" => $passPDF);
$data_string = json_encode($data);
$ch = curl_init('http://*****.com/****/v1/DealPdf');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1 );
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json')
);
$result = curl_exec($ch);
var_dump($result);
?>
“$result”应该是看起来像这样的字节数组:
string(1053240) "[37,80,68,70,45,49,46,54,10,37,211,244,204,225,10,49,32,48,32,111,98
..等等。 基本上我需要把我得到的东西保存为PDF(或任何通用文件)。
你可以尝试这样的事情:
// suppose that the response is a JSON array (look like it)
$bytes = json_decode($results);
$fp = fopen('myfile.pdf', 'wb+');
while(!empty($bytes)) {
$byte1 = array_shift($bytes);
$byte2 = array_shift($bytes);
if(!$byte2) {
$byte2 = 0;
}
fwrite($fp, pack("n*", ($byte1 << 8) + $byte2); // big endian byte order ?
}
fclose($fp);
GiDo的答案会起作用,但对于大文件需要很长时间。 我建议执行以下操作:
$bytes = json_decode($results);
$bytesStr = pack('C*', ...$bytes);
file_put_contents('myfile.pdf', $bytesStr);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.