我正在尝试压缩网站,然后上传到CDN。但是当cdn打开zip时我收到错误消息:Error extracting zip: Zip end of central directory signature not found
网站并不复杂,只是一些根级html文件和图像文件夹。我使用PHP创建了zip文件,当我在计算机上打开下载的副本时,它完全打开。当我手动上传到cdn时,它会完美地提取出来。
但是当我通过PHP / cURL上传时,我得到了错误。所以假设我的cURL函数出错了。如果这是一个简单的错误,我很抱歉,这是我第一次涉足cURL。
我的上传代码:
<?php
$file = "/path/to/mytest.zip";
$authorization = "Authorization: Bearer my_access_token";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://api.domain.com/bla/bla/bla");
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, [$authorization, 'Content-Type: application/zip']);
$cfile = new CurlFile(@$file, 'application/zip');
$data = array('data-binary' => realpath($cfile));
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$curl_response = curl_exec($curl);
curl_close($curl);
?>
任何建议表示赞赏。
答案 0 :(得分:0)
您应该在RFC上查看此代码段:https://wiki.php.net/rfc/curl-file-upload
CurlFile的正确实现是:
curl_setopt($curl_handle, CURLOPT_POST, 1);
$args['file'] = new CurlFile('filename.png', 'image/png');
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $args);