Dropbox CORS无法下载文件

时间:2019-07-08 04:11:54

标签: php dropbox

我正在遵循本指南https://dropbox.github.io/dropbox-api-v2-explorer/#files_download_zip

使用api投送箱时出现问题,想获取下载文件。 首先是关于cors问题。

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://content.dropboxapi.com/2/files/download_zip');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = 'Authorization: Bearer myTokenAcess';
$headers[] = 'Dropbox-Api-Arg: {\"path\":\"/myfolder/mysubfolder/mysubfolderagain\"}';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

结果是

  

调用API函数“文件/下载”时出错:HTTP错误   “内容类型”标头:“ application / x-www-form-urlencoded”。期待中   “文本/纯文本”,“文本/纯文本; charset = utf-8”之一,   “应用程序/八位字节流”,“应用程序/八位字节流; charset = utf-8”。

然后我要在标题上添加此行

$headers[] = 'Content-Type: application/octet-stream';

结果是

  

调用API函数“文件/下载”时出错:HTTP标头   “ Dropbox-API-Arg”:无法将输入解码为JSON

然后我尝试将drobox-api-arg行更改为

$headers[] = 'Dropbox-Api-Arg: json_decode({\"path\":\"/myfolder/mysubfolder/mysubfolderagain\"},TRUE)';

,结果仍然与上面相同

  

调用API函数“文件/下载”时出错:HTTP标头   “ Dropbox-API-Arg”:无法将输入解码为JSON

有人可以帮我解决这个问题吗?

更新: @sideshowbarker使用此结果

$headers[] = 'Dropbox-Api-Arg: {"path":"/myfolder/mysubfolder/mysubfolderagain"}'

enter image description here

1 个答案:

答案 0 :(得分:0)

我已经根据@sideshowbarker的说法找到了答案。我只需要将字节转换为zip 所以我只是将这行添加到结束行,现在工作正常。

foreach($result as $byte)
{
    $byteString .= $byte;
}
header("Content-type: application/zip"); 
header("Content-Disposition: inline; filename=tesFolderQ.zip");
echo $byteString;