react / expressjs / multer不保存图像

时间:2017-01-11 09:53:03

标签: javascript node.js reactjs express multer

我从“react dropzone component”发送一个文件到“node server”并尝试上传“multer”,但没有显示任何错误,文件没有上传,req.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));
        }
    });

});

反应成分类似于this, 在fetch函数中,我发送一个包含所有字段的对象

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);
        });

    }

1 个答案:

答案 0 :(得分:0)

内部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'。