我必须使用nodejs将文件上传到API,事实是,它不接受JSON对象,我需要发送它(不能将其转换为字符串)。任何想法如何发送该文件,还有一个JSON对象? (任何nodejs模块?)
var formData = {
profile: config.widenProfile,
filename: "example.pdf",
file: fs.createReadStream(path),
metadata: jsonObj, //cant send it because of this
};
var options = {
method: 'POST',
url: config.api,
formData:formData,
headers: {
'Authorization': 'Bearer '+config.token
}
};
request(options, function (error, response, body) {
console.log('Status:', response.statusCode);
console.log('Headers:', JSON.stringify(response.headers));
console.log('Response:', body);
});
答案 0 :(得分:0)
这对你有用吗?我使用一个简单的JSON测试它似乎工作,记住你需要使用多个深度和数组来展平JSON以使其工作,但我认为你可以编写一个通用函数来实现它。
在服务器端,您将在名为' jsonObj'的字段中收到JSON对象,请告诉我这是否有帮助
var fs = require("fs");
var request = require("request");
var jsonObj = {
"name" : "value",
"name1" : "value1",
"integer_val" : 1,
"integer_val2" : 2
}
var payload = { method: 'POST',
url: 'http://localhost:3000/PDFReader',
headers:
{'cache-control': 'no-cache',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
proxy: '',
json:true,
formData:
{ pdf: fs.createReadStream("./ICR.PDF")
}
};
var keys = Object.keys(jsonObj);
keys.forEach(function(key) {
var formatKey = 'jsonObj[' + key + ']';
payload.formData[formatKey] =jsonObj[key];
});
console.log(payload);
request(payload, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});