我目前的目標是編寫一個函數,允許我使用API從Dropbox服務器返回文件的元數據。雖然我能夠上傳文件並創建列表,但我無法下載。 流程如下:
1.)用戶單擊文件,該文件將window.location調用到文件路徑
2.)這會調用具有下載路徑的dbDownloadFile。
3.)依次調用dropbox客戶端並使用dropbox getFile方法。
下載文件Dropbox服務器
我用php://輸出創建了一個流,希望dropbox客戶端可以在那裏寫文件,但是它會在這個過程中產生一些奇怪的問題。首先,我可能只會得到部分文件下載或文件可能已損壞。在我試圖下載的html文件的情況下,它根本不起作用,因爲我下載的文件沒有完全傳輸,並且總是以一個類似'string(7)「getfile」'和其他問題的字符串結尾。這是如何創建這個文件流的問題?謝謝。
dropbox_text.php
window.location="download.php?filepath="+r[0]; //r[0] is the path
的download.php
$dbcon->dbDownloadFile($download_path);
Controller.php這樣
public function dbDownloadFile($filepath) {
$path_parts = pathinfo($filepath);
$extension = $path_parts['extension'];
$filename = $path_parts['filename'].'.'.$extension;
$at = $this->getAuthToken();
$dbxClient = $this->createDropboxClient($at);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
$f = fopen('php://output', "w");
//$f = tmpfile();
$metaData = $dbxClient->getFile($filepath, $f);
ob_clean();
flush();
sleep(1);
fclose($f);
//return $f;
}