2015-02-09 72 views
1

我正在开发一个使用PHP,Dropbox API和Box API的Web应用程序。 我已经有一个访问令牌来使用这些API。带有访问令牌的Dropbox/Box API直接下载文件

我的需求是: 1.直接从Dropbox的/盒服务器 2.下载文件而不被用户在浏览器 3.认证而不必共享的DropBox /箱文件

其实,我在我的服务器上有一个PHP脚本,它在文件url上创建一个Curl,并在授权标头中传递访问令牌。它可以工作,但在大文件上,我的脚本由于内存限制而失败(当用户在浏览器中下载文件时,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和箱API直接下载链接,但似乎没有什么可...

可我尝试有什么解决办法?

我只需要添加此授权头,但它让我疯了...

注: 对于谷歌驱动器,我们就可以直接令牌传递访问的文件下载网址,以便它的伟大工程。 对于OneDrive,Microsoft为我们提供了一个直接下载链接

+0

关于API第2版,见我的答复在:https://stackoverflow.com/a/45190200/2603965 – grebulon 2017-07-19 12:12:53

回答

0

仅供参考,使用Dropbox至少可以将访问令牌传递给URL参数“access_token”,而不是授权标头。

而且,在你需要的直接下载链接,但不能提供访问令牌的情况下,你可以使用/媒体返回的网址:

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

+0

谢谢它的作品!我已经测试过这样做,但它没有奏效,也许此刻我的代码中还有其他问题...... – 2015-02-11 09:21:40