我运行了一个服务,它的用户访问它来生成 PDF 文档,然后通过电子邮件发送给他们。我正在探索另一种交付途径 - 将准备好的文档直接弹出到他们指定的 Dropbox 文件夹中。
经过一番研究,我发现了Dropbox API ,然后在这里与他们的“资源管理器”一起玩。检查他们为执行文件上传而生成的 cURL,我发现只需一点 PHP 就可以轻松完成。创建一个新应用程序后,我写了一个小的 PHP 脚本
$headers = array('Authorization: Bearer ul...',
'Content-Type: application/octet-stream',
'Dropbox-API-Arg: {"path":"/test.txt","mode":"add"}');
$data = 'Betty bought a bit of butter';
$ch = curl_init('https://content.dropboxapi.com/2-beta-2/files/upload/');
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
在运行这个脚本时,一切都运行得非常完美——有问题的文件在几分之一秒内就出现在了我的 Dropbox 中。
一切都很好。但是,我开始使用 Dropbox API 的最初几分钟,这里有很多我不明白的地方
- 我上面通过盲目模仿他们的资源管理器示例代码编写的代码是进行文件上传的正确方法吗?
- 就我而言,我的服务用户必须向我提供我可以在上面使用的有效 App 令牌
Authorization:Bearer...
。我假设这个令牌限制我只能在他们的应用程序文件夹的范围内工作?他们自然不愿意交出一个令牌,让我可以用他们的 Dropbox 做我想做的事。*不用说 - 这将取决于他们将“App”权限类型配置为App Folder。
我非常感谢那些比我更了解 Dropbox API 的人对我的方法的任何反馈——尤其是其中的缺陷。