我在使用file_put_contents()将zip文件从远程服务器下载到另一个服务器时遇到麻烦
这当前来自提供zip文件二进制数据的api代码:
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
//header("Content-Type: application/zip");
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$update_filename."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($update_path));
ob_end_flush();
@readfile($update_path);
exit();
这是来自保存远程文件的服务器:
all curl request.....
$response = curl_exec($curl);
// some validation ....
// to simplify the process
file_put_contents($local_file, $response);
在这一点上创建了实际文件,如果我使用Windows或winrar打开它,确实可以很好地打开文件,但是当我使用ZipArchive时:
$file = '2019-07-07-update-1.0.4.9.zip';
$zip = new ZipArchive;
$zip->open($file);
$zip->extractTo($directory);
echo "<pre>";
print_r(error_get_last()); // Says it's an invalid zip object or damaged file.
die;
我已经尝试过对标头进行其他一些配置,但是同样的问题,无法使用php提取文件。