使用Node.js从String将文件上传到Box API

时间:2013-04-24 21:47:13

标签: node.js express box-api

我正在使用Box的API版本2并尝试上传文件。我有Oauth 2全部工作,但我在实际上传时遇到了麻烦。

我正在使用Node.js和Express,以及“请求”模块。我的代码看起来像这样:

request.post({
  url: 'https://upload.box.com/api/2.0/files/content',
  headers: {
    Authorization: 'Bearer ' + authToken
  },
  form: {
    filename: ????,
    parent_id: '0'
  }
}, function (error, response, body) {
  // ...
});

现在,我正在尝试上传到根文件夹,如果我理解正确的话,其ID为“0”。

真的不确定是什么值给“文件名”。我没有要读取的真实文件,但我有一个冗长的字符串表示我要上传的文件内容。

我最好如何上传此“文件”?

2 个答案:

答案 0 :(得分:1)

对于Box,我相信您希望使用请求多部分/表单数据实现。 看起来应该是这样的:

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

var r = request.post(...);
var form = r.form();
form.append('filename', new Buffer("FILE CONTENTS"), {filename: 'file.txt'});
form.append('parent_id', 0);

答案 1 :(得分:1)

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

function requestCallback(err, res, body) {
    console.log(body);
}

var accessToken = 'SnJzV20iEUw1gexxxxvB5UcIdopHRrO4';
var parent_folder_id = '1497942606';

var r = request.post({
    url: 'https://upload.box.com/api/2.0/files/content',
    headers: { 'Authorization': 'Bearer ' + accessToken }
    }, requestCallback);

var form = r.form();
form.append('folder_id', parent_folder_id);
form.append("filename", fs.createReadStream(path.join(__dirname, 'test.mp4')));