Я новичок в Dropbox API
, Я выполнил код, который загружает файл (на хост моего сайта) в мой Dropbox с данным токеном. Процесс проходит успешно.
Я хочу создать страницу, которая позволит пользователю выбрать файл (с его / ее локального компьютера) и загрузить его прямо в мой почтовый ящик.
У меня есть идея, что контроллер сначала загрузит файл на хост, а затем загрузит в dropbox. Однако эта идея отстой, так как для ее завершения требуется больше времени и пропускной способности. И я должен удалить файл на хосте после загрузки.
Это код, который работает на моем хосте:
<?php
require_once "dropbox-sdk/lib/Dropbox/autoload.php";
use \Dropbox as dbx;
$dropbox_config = array(
'key' => 'my key',
'secret' => 'my secret key'
);
$appInfo = dbx\AppInfo::loadFromJson($dropbox_config);
$webAuth = new dbx\WebAuthNoRedirect($appInfo, "PHP-Example/1.0");
$accessToken = 'my token code is given here';
$dbxClient = new dbx\Client($accessToken, "PHP-Example/1.0");
// Uploading the file
$f = fopen("working-draft.txt", "rb");
$result = $dbxClient->uploadFile("/working-draft.txt", dbx\WriteMode::add(), $f);
fclose($f);
//print_r($result);
// Get file info
$file = $dbxClient->getMetadata('/working-draft.txt');
// sending the direct link:
$dropboxPath = $file['path'];
$pathError = dbx\Path::findError($dropboxPath);
if ($pathError !== null) {
fwrite(STDERR, "Invalid <dropbox-path>: $pathError\n");
die;
}
// The $link is an array!
$link = $dbxClient->createTemporaryDirectLink($dropboxPath);
$dw_link = $link[0]."?dl=1";
echo "Download link: ".$dw_link."<br>";
?>
И я использую Codeigniter
У меня есть идея, что контроллер сначала загрузит файл на хост, а затем загрузит в dropbox. Однако эта идея отстой, так как для ее завершения требуется больше времени и пропускной способности.
К сожалению, это единственный безопасный способ сделать это. Для добавления файла в Dropbox необходимо знать токен доступа OAuth для вашей учетной записи, и вы не можете позволить другим знать этот токен. (Это даст им контроль над учетной записью.) Таким образом, токен должен храниться в секрете на вашем сервере. Это означает, что файл должен быть загружен на ваш сервер и перенесен в Dropbox оттуда.
Других решений пока нет …