2016-10-10 56 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;