2017-03-06 78 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) { 
     ... 
    })