2017-03-06 97 views
0

我想使用Dropbox的JavaScript API(v2)從Dropbox讀取文本文件的內容,從我所知道的最接近的方法是filesDownload()。假設我們在內容爲'abc'的根文件夾中有一個test.txt文件。我的JavaScript代碼看起來像下面的(我用的WebPack)Dropbox API v2 JavaScript讀取文件

var Dropbox = require('dropbox'); 
var dbx = new Dropbox({accessToken: '...'}); 

dbx.filesDownload({path: '/test.txt'}) 
    .then(function (response) { 
     console.log(response); 
    }) 
    .catch(function (error) { 
     console.log(error); 
    }) 

實際上是返回一個對象,具有以下內容

Object { 
    client_modified: "2017-03-06T06:34:24Z" 
    content_hash: "f62f4917741f7ed26e883d8193ddf477cde87b99dfbd8d5d8f67eb400087e0b6" 
    ... 
} 

但沒有文件內容(如「ABC」)在返回的對象。相反,當我檢查Chrome瀏覽器控制檯的網絡選項卡時,我可以看到名爲「download」的文件,其URL爲「https://content.dropboxapi.com/2/files/download」,其內容爲「abc」。

我的問題是,我怎樣才能真正得到文件的內容? (一旦我可以得到的內容,那麼它很容易在網頁上顯示他們)

回答

5

哦,我弄清楚如何獲取文件的內容。 返回的對象實際上包含fileBlob對象

Object 
    client_modified: "2017-03-06T06:34:24Z" 
    .... 
    fileBlob: Blob 
     size: 5 
     type: "application/octet-stream" 
     __proto__: Blob 
      ... 

,您可以使用瀏覽器的FileReader獲取內容出來。所以完整的代碼將如下所示

var Dropbox = require('dropbox'); 
var dbx = new Dropbox({accessToken: '...'}); 

dbx.filesDownload({path: '/test.txt'}) 
    .then(function (response) { 
     var blob = response.fileBlob; 
     var reader = new FileReader(); 
     reader.addEventListener("loadend", function() { 
      console.log(reader.result); // will print out file content 
     }); 
     reader.readAsText(blob); 
    }) 
    .catch(function (error) { 
     ... 
    }) 
相關問題