无法提取PHP创建的zip并通过cURL上传

时间:2017-12-14 05:01:15

标签: php curl

我正在尝试压缩网站,然后上传到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);

?>

任何建议表示赞赏。

1 个答案:

答案 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);