react / expressjs / multer 不保存图像

react / expressjs / multer don't save image

我从 "react dropzone component" 发送一个文件到 "node server" 并尝试用 "multer" 上传这个文件但是没有显示任何错误,文件没有上传和请求。file/s未定义

var express = require('express');
var router = express.Router();
var msg = require('../helpers/MessageHandler');
var CM = require('../helpers/ContentMessages.json');

var storage = multer.diskStorage({
    destination: function(req, file, cb) {
        cb(null, 'public/uploads/');
    },
    filename: function(req, file, cb) {       
        cb(null, Date.now() + file.originalname);
    }
});

var upload = multer({storage: storage}).any();

var path = '/enterprise';

router.post(path, function(req, res, next) {

    var enterprise = req.body.obj;

    console.log(req.body);
    console.log(req.files);
    console.log(req.file);
    
    upload(req, res, function(err) {
        
        if(err) {
             return res.status(500).json(msg.prototype.errorMsg(err));
        } else {
            return     res.status(200).json(msg.prototype.success(CM.message.success.doc_create, null));
        }
    });

});

react 组件类似于 this, 在获取函数中,我发送了一个包含所有字段的对象

insertObj (values) {

        console.info(values);
  
        const obj = JSON.stringify({obj: values});
        let url = '/api/v1/enterprise';
        const headers = { 'Content-Type': 'application/json', 'Access-Control-Request-Method': '*'};

        const req = new Request(url, {method: 'POST', headers: headers, body: obj});
  
        fetch(req)
            .then((response) => {

                return response.json();

            })
        .then((enterprise) => {
          console.log(enterprise);
        }).catch((error) => {
           console.log(error);
        });

    }

inside multer req.files 将可见。因此,将您的代码更改为:

upload(req, res, function(err) {
 var enterprise = req.body.obj;
    console.log(req.body);
console.log(req.files);
console.log(req.file); 
    if(err) {
         return res.status(500).json(msg.prototype.errorMsg(err));
    } else {
        return     res.status(200).json(msg.prototype.success(CM.message.success.doc_create, null));
    }
});

另外 'Content-Type':'application/json' 应该是 enctype='multipart/form-data'。