我是Dropbox API
的新手。我已经完成了使用给定令牌将文件(在我的网站主机上)上传到我的Dropbox的代码。该过程成功运行。
我想设计一个页面,允许用户选择一个文件(来自他/她的本地机器)并直接上传到我的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
答案 0 :(得分:0)
我知道控制器会先将文件上传到主机,然后上传到Dropbox。然而,这个想法很糟糕,因为它需要更多的时间和带宽才能完成。
不幸的是,这是唯一安全的方法。将文件添加到Dropbox需要知道您帐户的OAuth访问令牌,并且您不能允许其他人知道该令牌。 (它会让他们控制帐户。)因此,令牌需要在您的服务器上保密。这意味着该文件需要上传到您的服务器并从那里传输到Dropbox。