我正在使用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);
正在记录的内容:
如您所见,目标是以“Temp”文件夹为目标,并且不会生成文件名。有人可以在这里找出问题所在吗?
请注意,我使用的是keystoneJS框架,但我相信它不会对此产生任何影响。
试试这个,
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 };
这可能有效。
在我的所有节点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。
希望它也可以帮到你。