Dropbox API v2 JavaScript 读取文件

5
我希望使用Dropbox的JavaScript API(v2)从Dropbox中读取文本文件的内容,据我所知,最接近的方法是filesDownload()。假设我们在根目录中有一个名为test.txt的文件,其中包含内容“abc”。我的JavaScript代码如下(我使用webpack)。
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”的文件,其网址为“https://content.dropboxapi.com/2/files/download”,其中包含内容“abc”。我的问题是,我该如何实际获取文件内容?(一旦我能够获取内容,就很容易在网页中显示它们)
1个回答

14

哦,我找到了获取文件内容的方法。返回的对象实际上包括一个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) {
        ...
    })

非常感谢,你救了我!顺便说一下,在我的情况下,我使用了 response.result.fileBlob 而不是 response.fileBlob - AlirezaAsadi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接