我已使用multer
上传图片。在它正在我的根目录中的uploads
目录上载文件。不是,我不想将图片显示为html。
我尝试了多种方法来定义图片网址,但图片没有显示。
var multer = require('multer');
var upload = multer({ dest: 'uploads/'});
我正在尝试在views/admin/dashbord/product/index
文件上显示图像。
uploads文件夹位于我的根目录APP Name/uploads
中。
上传图像后,图像名称为:8084404d8c59647b7067f4ed98aa3eef.PNG
图片网址应该是什么,如何在index.handlebars文件中显示图片
感谢进阶。
答案 0 :(得分:1)
创建stroge Dir
const storage = multer.diskStorage({
destination: './public/uploads/',
filename: function(req, file, cb){
cb(null,file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
});
上传文件
const upload = multer({
storage: storage,
limits:{fileSize: 1000000},
fileFilter: function(req, file, cb){
checkFileType(file, cb);
}
}).single('myImage');
是否检查文件类型图像
function checkFileType(file, cb){
// Allowed ext
const filetypes = /jpeg|jpg|png|gif/;
// Check ext
const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
// Check mime
const mimetype = filetypes.test(file.mimetype);
if(mimetype && extname){
return cb(null,true);
} else {
cb('Error: Images Only!');
}
}
您要上传图片的路线:
app.post('/upload', (req, res) => {
upload(req, res, (err) => {
if(err){
res.render('index', {
msg: err
});
} else {
if(req.file == undefined){
res.render('index', {
msg: 'Error: No File Selected!'
});
} else {
res.render('index', {
msg: 'File Uploaded!',
});
}
}
});
});
然后在需要的地方使用图像。上传的文件应位于“公共”文件夹中。
您必须安装multer
并导入软件包,并且必须导入path