2016-10-10 175 views
0

我正在尝试使用Dropbox Javascript SDK将文件下载到客户端的Webapp本身。使用Dropbox JavaScript SDK下载文件的问题

我想说清楚,我只希望将文件下载到Web应用程序中的文件夹中;我明白,由于安全问题,这可能实际上是不可能的。

我下面提供的文档:

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

什么是你到底停留在?它看起来像你正在得到预期的日志报表。如果您正在寻找一种方法将这些数据提供给用户下载到他们的机器上,请查看[此示例](https://github.com/dropbox/dropbox-sdk-js/blob/master/examples/)下载/ index.html的#L51)。 (这是一种不同的API方法,但它的工作方式相同。) – Greg

+0

不明确的道歉。这里的总体目标是将用户下拉框中的文件下载到Web应用程序本身的一个“下载”文件夹中(这可以是客户端或服务器端,我不会受到影响);我不是指用户下载文件夹。我尝试了你引用的方法,并且按照你的说法进行,这不幸并不是我想要的。我可以使用'filesDownload'方法下载,但我不知道如何移动结果文件或使用它来获得我想要的结果。这个想法是所有这些都发生在使用JavaScript的幕后。 – LJH

+0

我不确定遵循了什么,但听起来Dropbox API调用正常,所以恐怕我不能提供更多的帮助,因为这听起来更像是一个通用的JavaScript数据处理问题。 – Greg

回答

0

如果您希望在网络应用程序中下载和使用文件,那么设置后端服务器并使用该服务器临时存储内容并获得用户许可会更好。

要做到这一点,使一个HTTP请求,然后使用快速通过调用的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;