2013-04-24 80 views
2

我正在使用Box的API版本2並嘗試上載文件。我有Oauth 2所有的工作,但我無法進行實際上傳。使用Node.js將文件從字符串上傳到Box API

我正在使用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) { 
    // ... 
}); 

現在,我想上傳到根文件夾,如果我理解正確的話,有「0」的ID。

我是什麼真的不確定是什麼值給「文件名」。我沒有一個真正的文件可以讀取,但是我有一個很長的字符串來表示我想上傳的文件內容。

如何最好的應該上傳這個「文件」?

回答

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); 
+0

我試圖這樣做,但我仍然有一個「invalid_request_parameters」的錯誤。我不熟悉這個請求語法。什麼都應該通過request.post? – brandly 2013-04-26 18:46:19

+0

此外,我已經檢查出[這篇文章](http://stackoverflow.com/questions/13797670/nodejs-post-request-multipart-form-data)似乎是與框交互,雖然他們不提到它。他們使用'restler'模塊,它看起來不錯而且簡單,但是我仍然不確定如何將字符串讀作文件。 – brandly 2013-04-26 19:13:52

+0

我不使用框,但在文檔快速織機,我認爲你想要: { uri:'https://api.box.com/2.0/files/content', 標題:{ 授權:'Bearer'+ authToken } } – 2013-04-26 21:36:20

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')));