【问题标题】:Nodejs - req.file returns undefinedNodejs - req.file 返回未定义
【发布时间】:2019-07-23 14:26:22
【问题描述】:

当我尝试使用 post 方法上传文件时,multer 给出的 req.file 返回未定义。 也许它没有按名称获得正确的输入?我在这里真的很黑暗。 提前感谢您的帮助

 //Front-end form
<form action="/dashboard" method="POST" id="newproduct-form" class="row" enctype='multipart/form-data'>
<input type="file" name="productImage" class="form-control-file" id="exampleInputFile">
</form>

//Backend
const mongoose = require('mongoose');
const multer = require('multer');
const path = require('path');

//Set Storage Engine
const storage = multer.diskStorage({
    destination: './public/uploads/',
    filename: function(req, file, cb){
        cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
    }
});

//Init upload
const upload = multer({
    storage: storage
}).single('productImage');

 router.post('/dashboard', (req, res) => {

    upload(req,res,(err) =>{
        if(err) console.log(err);

        console.log(req.file);
    });
}

【问题讨论】:

  • 您的代码非常适合我,Windows 10,Node v10.15。我得到以下日志: { fieldname: 'productImage', originalname: '1429307571797.jpg', encoding: '7bit', mimetype: 'image/jpeg'.... etc... 我确实创建了 /public/uploads目录虽然。顺便说一句,您使用什么浏览器?
  • 我正在使用火狐。但我还有其他通过 jQuery ajax 处理的字段。这有什么好担心的吗?编辑:我测试了删除 jquery ajax 并且它确实正确记录了......你知道什么会导致这个问题吗?提前致谢

标签: node.js express file-upload multer


【解决方案1】:

我想通了。我正在使用jQuery ajax。通过使用$(this).ajaxSubmit({ajax content}); 而不是$.ajax({ajax content}),我设法让它发挥作用。

【讨论】:

    猜你喜欢
    • 2017-01-15
    • 1970-01-01
    • 2022-01-18
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 2019-06-27
    • 2022-01-10
    相关资源
    最近更新 更多