带有访问令牌的Dropbox / Box API直接下载文件

时间:2015-02-09 14:20:52

标签: php curl dropbox-api box-api

我正在使用PHP,Dropbox API和Box API开发Web应用程序。 我已经有一个访问令牌来使用这些API。

我的需求是:  1.直接从Dropbox / Box服务器下载文件  2.未在浏览器中进行用户身份验证  3.无需在DropBox / Box上共享文件

实际上,我的服务器上有一个PHP脚本,它在文件URL上创建了一个Curl,其中访问令牌通过了Authorization标头。它可以工作但是在大文件上,我的脚本由于内存限制而失败(当用户在浏览器中下载文件时,Curl将文件存储在内存中)。

<?php
header("Content-Type: application/octet-stream; charset=UTF-8");
header('Content-Disposition: attachment;filename="' . $filename . '";filename*=UTF-8\'\'' . urlencode($filename));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $downloadUrl);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token));
curl_exec($ch);
curl_close($ch);
?>

出于某些隐私原因,我无法在我的网络服务器上存储临时文件。 出于某些用户友好的原因,我不想使用Ajax请求下载该文件。

我在Dropbox和Box API中搜索过直接下载链接,但似乎没有任何可用的内容......

我可以尝试哪些解决方案?

我只需添加此授权标题但它让我发疯...

注意: 对于Google云端硬盘,我们可以直接在文件下载网址中传递访问令牌,因此效果很好。 对于OneDrive,Microsoft为我们提供了直接下载链接

1 个答案:

答案 0 :(得分:0)

作为参考,至少使用Dropbox,您可以在URL参数“access_token”中传递访问令牌,而不是在Authorization标头中传递。

此外,在您需要直接下载链接但无法提供访问令牌的情况下,您可以使用/ media返回的URL:

https://www.dropbox.com/developers/core/docs#media