问题描述
想用node 调用一个API接口,接口参数要求上传文件,如何用request module 实现这个操作呢?求大神。。现在的代码如下:var config = require(’./config’);var request = require(’request’);
var fs = require(’fs’);
var url = config.host+’/inpidual/doc/ocr’;
var file = fs.createReadStream(’./WechatIMG5.jpeg’);
var options = {
url: url,method: ’POST’,'rejectUnauthorized': false,form: { ’agent_key’: config.agent_key, ’agent_no’: config.agent_no, ’doc_type’: ’CHN_ID’, ’img’: file, // ’has_oss_key’: ’1’}
};
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) { console.log(body); // console.log(error);}
});
问题解答
回答1:文件需要使用 formData 而不是 form:
var options = { url: url, method: ’POST’, formData: {’img’: { value: fs.createReadStream(’./WechatIMG5.jpeg’)}, }};
请注意不同的传输方式 header 中的 content-type 是不同的,对于文件是 multipart/form-data ; 普通的键值对是 application/x-www-form-urlencoded ; json 格式的数据是 application/json。
请仔细阅读官方文档,在 request 中, form 对应的是 application/x-www-form-urlencoded , formData 对应的是 multipart/form-data 。