我正在尝试使用Dropbox Javascript SDK将文件下载到客户端的Webapp本身。
我想明确表示我只想将文件下载到网络应用中的文件夹中;据我所知,由于安全问题,这实际上可能无法实现。
我正在遵循以下提供的文档:
http://dropbox.github.io/dropbox-sdk-js/index.html
http://dropbox.github.io/dropbox-sdk-js/Dropbox.html#filesDownload__anchor
这是我的控制器代码:
$scope.testDownload = function() {
console.log('Testing Download');
dbx.filesDownload( {path: '/Collorado Springs.jpg'} ) // Just a test file
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(err);
});
};
我确实可以看到下载确实发生了,因为它显示在Chrome网络工具中,如下所示:
(我没有足够的声誉来插入多个链接,所以请插入我生成的这个共享“链接”
https:// www.dropbox.com/s/s0gvpi4qq2nw23s/dbxFilesDownload.JPG?dl=0
我相信这是我缺乏使用文件下载或误用JavaScript的知识。
提前感谢您提供的任何帮助。
答案 0 :(得分:1)
如果您希望在Web应用程序中下载和使用文件,那么最好设置一个后端服务器并使用它来临时存储内容,当然是用户权限。
要执行此操作,请发出HTTP请求,然后使用Express通过调用Dropbox服务服务器端来处理请求,然后使用以下代码:
'use strict';
var Dropbox = require('dropbox');
var fs = require('fs');
var path = require('path');
exports.downloadFile = function(token, id, eventID, fileType, callback) {
var dbx = new Dropbox({ accessToken: token }); // creates post-auth dbx instance
dbx.filesDownload({ path: id })
.then(function(response) {
if(response.fileBinary !== undefined) {
var filepath = path.join(__dirname, '../../images/Events/' + eventID + '/' + fileType + '/Inactive/', response.name);
fs.writeFile(filepath, response.fileBinary, 'binary', function (err) {
if(err) { throw err; }
console.log("Dropbox File '" + response.name + "' saved");
callback('File successfully downloaded');
});
}
})
.catch(function(err) {
console.log(err);
callback('Error downloading file using the Dropbox API');
})
}
module.exports = exports;