Nodejs Multer diskStorage无法正常工作 - 为什么目标定位临时文件夹而不上传

问题描述 投票:0回答:2

我正在使用Multer上传个人资料图片,但遗憾的是无法正常工作。这是我的代码:

var express =   require("express");
var multer  =   require('multer');
var app         =   express();
var storage =   multer.diskStorage({
  destination: function (req, file, callback) {
    callback(null, './public/uploads');
  },
  filename: function (req, file, callback) {
    callback(null, file.fieldname + '-' + Date.now());
  }
});
var upload = multer({ storage : storage}).single('avatar');

exports.uploadAvatar = function(req, res) {
    console.log(req.files);
    upload(req,res,function(err) {
        if(err) {
            return res.end("Error uploading file.");
        }
        res.end("File is uploaded");
    });
};

和路线:

app.post('/api/uploadAvatar', requiredAuthentication, routes.api.instructor.uploadAvatar);

这是我的表格:

<form method="post" id="editProfile" enctype="multipart/form-data" action="/api/uploadAvatar">
    <div class="form-group">
        <label>Profile image <span>*</span></label>
        <input type="file" name="avatar" class="form-control" id="avatar" required />
    </div>
    <div class="form-actions">
        <button type="submit" class="button" id="btnSubmit">Upload</button>
    </div>
</form>

这就是console.log(req.files);正在记录的内容:enter image description here

如您所见,目标是以“Temp”文件夹为目标,并且不会生成文件名。有人可以在这里找出问题所在吗?

请注意,我使用的是keystoneJS框架,但我相信它不会对此产生任何影响。

node.js multer keystonejs
2个回答
0
投票

试试这个,

var express =   require("express");
var multer  =   require('multer');
var app         =   express();
var storage =   multer.diskStorage({
  destination: function (req, file, callback) {
    callback(null, './public/uploads');
  },
  filename: function (req, file, callback) {
    callback(null, file.fieldname + '-' + Date.now());
  }
});
var upload = multer({ storage : storage}).single('avatar');

module.exports. = { uploadAvatar: upload };

这可能有效。


0
投票

在我的所有节点API中,我以这种方式使用multer,并且它一直适用于我。

var storage = multer.diskStorage({
  destination: function(req, file, callback) {
    callback(null, './uploads')
  },
  filename: function(req, file, callback) {
    console.log(file)
    callback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
  }
})

有关详细信息,请查看此qazxsw poi。

希望它也可以帮到你。

© www.soinside.com 2019 - 2024. All rights reserved.