node.js - node 如何post 发送文件 ?

查看:216
本文介绍了node.js - node 如何post 发送文件 ?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

想用node 调用一个API接口,接口参数要求上传文件,如何用request module 实现这个操作呢?求大神。。
现在的代码如下:
var config = require('./config');
var request = require('request');

var fs = require('fs');

var url = config.host+'/individual/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);
}

});

解决方案

文件需要使用 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 。

这篇关于node.js - node 如何post 发送文件 ?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆