我刚开始使用Dropbox JavaScript SDK在WordPress项目中列出产品说明书。它已经开始很好地列出了与产品标题相匹配的相应PDF文件(代码向下),但我想检索一个公共链接供人们下载。我开始查看SDK中包含的示例,但它需要一个共享链接 - 这是我想要检索的,对(不确定我是否混淆了这些条款)?对象输出不包括共享链接,而是ID和相对路径(如果有帮助的话)。
function listFiles() {
var ACCESS_TOKEN = '*******';
var dbx = new Dropbox({ accessToken: ACCESS_TOKEN });
dbx.filesListFolder({path: '/Product Data Sheet/<?php echo $dbx_line; ?>/<?php echo $dbx_category; ?>/<?php echo ICL_LANGUAGE_NAME_EN; ?>/'})
.then(function(response) {
displayFiles(response.entries);
console.log(response);
})
.catch(function(error) {
console.error(error);
});
return false;
}
function displayFiles(files) {
var filesList = document.getElementById('files');
var li;
for (var i = 0; i < files.length; i++) {
li = document.createElement('li');
var name = files[i].name.slice(4).slice(0, -7),
name = name.replace('_', '/');
if( name === '<?php echo $dbx_name; ?>') {
li.appendChild(document.createTextNode(name));
filesList.appendChild(li);
}
}
}
listFiles();
JS控制台输出:
答案 0 :(得分:1)
新的Dropbox API记录很少 - 我只花了一天左右的时间。
1)您的列表文件看起来不错
var dbx = new Dropbox({ accessToken: ACCESS_TOKEN });
dbx.filesListFolder({path: ""})
.then(function(response) {
console.log(JSON.stringify(response, null, 4));
})
.catch(function(error) {
console.error(error);
});
结果类似于以下
{
"entries": [
{
".tag": "folder",
"name": "Apps",
"path_lower": "/apps",
"path_display": "/Apps",
"id": "id:XYZ",
"$$hashKey": "object:175"
},
{
".tag": "file",
"name": "Getting Started with Dropbox.pdf",
"path_lower": "/getting started with dropbox.pdf",
"path_display": "/Getting Started with Dropbox.pdf",
"id": "id:XYZ",
"client_modified": "2016-04-10T19:24:04Z",
"server_modified": "2016-04-10T19:24:01Z",
"rev": "14703ce11",
"size": 1142545,
"$$hashKey": "object:180"
}
],
"cursor": "XYZ",
"has_more": false
}
2)现在使用上面的内容为文件创建一个共享链接(doc说它只返回链接,如果存在的话)。
请注意&GT;&GT;我不确定pathLower是否需要,但我只是假设它是
dbx.sharingCreateSharedLink({path: **pathLower_to_your_file**})
.then(function(response) {
console.log(response.url);
})
.catch(function(error) {
console.error(error);
});
};
这将产生如下内容
{
".tag": "file",
"url": "https://www.dropbox.com/s/**your id**/Getting%20Started%20with%20Dropbox.pdf?dl=0",
... // omitted for brevity
}
3)最后,您可以使用URL来检索文件,例如
wget https://www.dropbox.com/s/**your id**/Getting%20Started%20with%20Dropbox.pdf?dl=0
**进一步的工作表明dropbox使用HTTP转发,节点请求有问题。我使用了fetch,它就像一个带有转发https://www.npmjs.com/package/node-fetch
的魅力fetch(req.body.url, {
method: 'GET'
, redirect: 'follow'
, follow: 20
, timeout: 0
})
.then(function(res) {
s3.createBucket(bucket_params, function(err) {
if(err){
console.log(err);
}else{
var s3obj = new AWS.S3({params: {Bucket: bucket_name, Key: file_name}});
s3obj.upload({Body: res.body}).
on('httpUploadProgress', function(evt) { console.log(evt); }).
send(function(err, data) {
if(err){
console.log("error uploading data" + err);
}else {
console.log("Success!!!!!") }
})
}
});
});