Моя текущая цель - написать функцию, которая позволяет мне возвращать метаданные файла с сервера Dropbox с использованием его API. Хотя мне удалось загрузить файлы и создать листинг, у меня проблемы с загрузкой. Поток идет следующим образом:
1.) Пользователь нажимает на файл, который вызывает window.location на путь к файлу
2.) Это вызывает путь dbDownloadFile с пути загрузки.
3.) Который по очереди вызывает клиента Dropbox и использует метод getbox getbox.
Загрузка файла с сервера 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;
}