【问题标题】:Can't change destination in multer无法在multer中更改目的地
【发布时间】:2018-03-11 18:57:10
【问题描述】:

当我上传我的表单(其中只包含一张图片)时,图片进入根文件夹,但我希望它进入 /public/images。我有一个单独的 routes.js 文件来处理路由。这就是我设置 multer 的方式(在我的 routes.js 文件中)。

var multer = require('multer');
    var upload = multer({dest: '/public'});

POST 请求的路由如下所示:

app.post('/upload', isLoggedIn, upload.single('file'), function (req, res) {
        var file = __dirname + req.file.filename;
        fs.rename(req.file.path, file, function (err) {
            if (err) {
                console.log(err);
                res.send(500);
            } else {
                res.json({
                    message: 'File uploaded successfully',
                    filename: req.file.filename
                });
            console.log(file);
            }
        });
    });

,表单本身看起来像这样(它是一个 ejs 文件):

<form method="post" action="/upload" enctype="multipart/form-data">
                    <label for="profilepicture">Profile picture</label>
                    <input type="file" name="file" accept="image/*">
                    <input type="submit" value="change profile picture">    
                    </form>

【问题讨论】:

    标签: node.js file-upload path fs multer


    【解决方案1】:

    您在dest 中提供了错误的路径,它是一个相对路径,所以它应该是dest: 'public/' 而不是dest: '/public'

    此外,您正在使用 fs.rename 从公用文件夹中移动文件,而将其移动到根文件夹之外的原因是您在文件名中添加了根文件夹,而不是作为路径:

    var file = __dirname + req.file.filename;
    

    应该是:

    var file = __dirname + '/' + req.file.filename;
    

    甚至更好:

    var file = path.join(__dirname, req.file.filename);
    

    总的来说,一个不需要fs.rename 的工作脚本:

    var multer = require('multer');
    var upload = multer({dest: 'public/'});
    
    app.post('/upload', isLoggedIn, upload.single('file'), function (req, res) {
      res.json({
        message: 'File uploaded successfully',
        filename: req.file.filename
      })
    })
    

    【讨论】:

      猜你喜欢
      • 2016-06-29
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      相关资源
      最近更新 更多