使用NodeJS访问Dropbox上的文件

时间:2019-06-13 14:27:30

标签: node.js http request dropbox dropbox-api

我将Dropbox API与Node JS一起使用。我可以使用HTTP请求将文件上传到我的Dropbox,但无法与其一起下载。我的目的是使用HTTP请求来查看保管箱中文件的内容。

这是上传文件的代码:

var request = require('request')
var fs = require('fs')

var token = "XXXXXXXXXXXXXXXXX"
var filename = "path/to/file/file.txt"

var content = fs.readFileSync(filename)

options = {
            method: "POST",
            url: 'https://content.dropboxapi.com/2/files/upload',
            headers: {
              "Content-Type": "application/octet-stream",
              "Authorization": "Bearer " + token,
              "Dropbox-API-Arg": "{\"path\": \"/files/"+filename+"\",\"mode\": \"overwrite\",\"autorename\": true,\"mute\": false}",
            },
            body:content
};

request(options,function(err, res,body){
     console.log("Err : " + err);
     console.log("res : " + res);
     console.log("body : " + body);    
 })

现在下载该文件的请求功能应该是什么?我正在尝试这样的事情:

var request = require('request')
var fs = require('fs')

var token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
var filename = "path/to/file/file.txt"

var content = fs.readFileSync(filename)

options = {
            method: "GET",
            url: 'https://content.dropboxapi.com/2/files/upload',
            headers: {
              "Content-Type": "application/octet-stream",
              "Authorization": "Bearer " + token,
              "Dropbox-API-Arg": "{\"path\": \"/files/"+filename+"\",\"mode\": \"overwrite\",\"autorename\": true,\"mute\": false}",
            },

};

request(options,function(err, res){
     console.log("Err : " + err);
     console.log("res : " + res);

 })

但是res仅给出object Object

如何下​​载文件?

1 个答案:

答案 0 :(得分:1)

您下载文件失败,因为使用的URL(https://content.dropboxapi.com/2/files/upload)不正确。根据 Dropbox API document,正确的URL端点是:

https://content.dropboxapi.com/2/files/download

但是,最好使用dropbox之类的npm模块来实现需求,因为它已经包装了逻辑。代码如下:

var fetch = require('isomorphic-fetch');
var Dropbox = require('dropbox').Dropbox;
var dbx = new Dropbox({ accessToken: 'YOUR_ACCESS_TOKEN_HERE', fetch: fetch });
dbx.filesDownload({path: '...'})
.then(function(data) {
  ...
});