2015-02-09 153 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