Node.js 使用axios和Professional(nodejs->;express)发送图像

Node.js 使用axios和Professional(nodejs->;express)发送图像,node.js,express,axios,formidable,Node.js,Express,Axios,Formidable,我正试图用axios(nodejs)向express服务器发送一个图像。 这是axios脚本的代码: const axios = require('axios'); const fs = require('fs') const FormData = require('form-data') var img = fs.readFileSync("C:/Users/alessio/Documents/FX/screenshot.png", 'utf8'); console.log(img) le

我正试图用axios(nodejs)向express服务器发送一个图像。 这是axios脚本的代码:

const axios = require('axios');
const fs = require('fs')
const FormData = require('form-data')

var img = fs.readFileSync("C:/Users/alessio/Documents/FX/screenshot.png", 'utf8'); 
console.log(img)
let data = new FormData();
data.append('img', img, "img.png")
console.log(data);
axios.post('http://192.168.43.193:3000/testAPI/upload_img_mt', data, {
    headers: {
        'accept': 'application/json',
        'Accept-Language': 'en-US,en,q=0.8',
        'Content-Type': `multipart/form-data; boundary=${data._boundary}`,
        'timeout': 999999
    },
})
    .then(function (response){
        //console.log(response);
    })
这是带有express的代码服务器端,以及由Forward管理的响应:

router.post('/upload_img_mt', function(req, res, next){
    console.log(req)

    var form = new formidable.IncomingForm();
    form.uploadDir = "fxdiary";
    form.encoding = 'utf8';
    form.on('fileBegin', function(name, file){
        console.log(form.uploadDir + "/" + file.name);
    });
    form.parse(req, function(err, fields, files) {
        console.log(files);
        console.log(err);
        console.log(fields);
    });
    res.sendStatus(200);
});
文件图像已保存,但不是正确的png图像。图像的大小不正确,有时会随机变化。例如,原始文件大小为33k,变为900字节或54k或其他值


发生了什么事?此代码中的问题在哪里?

您不需要在内容类型标题中传递边界,因为它是由浏览器自动添加的。您可能会破坏默认的边界机制


如果您仍然面临文件大小问题,请尝试在Nodejs端使用文件处理模块

您是否可以评论console.log(文件);控制台日志(err);console.log(字段);控制台中未打印这三个的调试日志以及解析的登录回调。。唯一打印的日志是在“fileBegin”处。nodejs脚本在没有浏览器的情况下运行,如果我删除边界,结果是:错误:内容类型标头错误,没有多部分边界With multer不工作。。错误为MulterError:响应中出现意外字段(错误500)。表单附加数据的名称必须与upload.single('name')处理的名称相同。解决方案的第二部分是axios发送的编码:必须与multer(7bit)相同。没有指定编码的fs.readFileSync完成了其余的工作。当我提到穆特时,我的意思也是一样的。