我正在使用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框架,但我相信它不会对此产生任何影响。
答案 0 :(得分:1)
同样的问题(REST-API、Node.js、Postman、POST 请求、上传图片、multer):
("multer": "^1.4.2")
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './upload');
},
filename: function (req, file, cb) {
return cb(null, file.originalname)
}
});
但这有效:
const storage = multer.diskStorage({
destination: './upload',
filename: function (req, file, cb) {
return cb(null, file.originalname)
}
});
答案 1 :(得分: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 };
这可能有效。
答案 2 :(得分: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))
}
})
有关更多详细信息,请查看此Link。
希望它也可能对您有所帮助。
答案 3 :(得分:0)
我不知道您应用程序的文件夹结构,但是您选择的路径似乎是针对公用文件夹的父文件夹。您可以复制公用文件夹的相对路径,然后在其他文件夹上添加,否则我认为/ public /无论如何都可以帮助您
要引用该图像,如果它是静态文件夹,还必须从公共文件中调用它。 所以 src路径来自静态文件夹,因此您无需添加该路径