提问者:小点点

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


我正在使用PHP、Dropbox API和Box API开发一个web应用程序。我已经有了使用这些API的访问令牌。

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

实际上,我的服务器上有一个PHP脚本,它使用通过授权头传递的访问令牌对文件url进行卷曲。它可以工作,但在大文件上,我的脚本由于内存限制而失败(当用户在浏览器中下载文件时,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);
?>

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

我在Dropbox和Box API中搜索了一个直接下载链接,但似乎什么都没有。。。

我可以尝试什么解决方案?

我只需要添加这个授权头,但它让我疯狂。。。

注意:对于GoogleDrive,我们可以在文件下载url中直接传递访问令牌,因此它工作得非常好。对于OneDrive,Microsoft为我们提供了一个直接下载链接


共1个答案

匿名用户

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

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

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