我目前正在使用multer存储图像,以在公共位置上传文件夹,然后使用缓冲区存储到mongodb并转换回64bit以显示它,这使网站速度变慢。 我知道我对此很陌生,确实需要逐步的过程和说明。谢谢
App.js->
const blogSchema=new mongoose.Schema({
name:String,
title:String,
image:String,
body:String,
uploadImg:{
data: Buffer,
contentType: String
},
created:{
//here we define a default date in case the user doesnt type one
type:Date,default:Date.now
}})
multer and storage->
function checkFileType(file,cb){
//allowed extensions
//console.log(file);
const filetypes=/jpeg|jpg|png|gif/;
const extname=filetypes.test(path.extname(file.originalname).toLowerCase());
const mimetype=filetypes.test(file.mimetype);
if(mimetype && extname){
return cb(null,true)
}else{
//console.log(file);
cb('Error : Only Images Accepted');
}
}
var Storage = multer.diskStorage({
destination:"./public/uploads/",
filename:(req, file, callback)=>{
callback(null, file.fieldname+"-"+Date.now()+path.extname(file.originalname))
},
})
var upload = multer({storage:Storage,
limits:{fileSize:10000000},
fileFilter:function(req,file,cb){
checkFileType(file,cb)},
}
).single('file');
发布后路线->
var obj = {
name:req.body.name,
title:req.body.title,
image:req.body.image,
body:req.body.body,
uploadImg: {
data: fs.readFileSync(path.join( './public/uploads/' + req.file.filename)),
contentType: 'image/png'} }
Blog.create((obj),
在show.ejs->
<img src="data:blog/<%=blog.uploadImg.contentType%>;base64,<%=blog.uploadImg.data.toString('base64')%>" alt="someImage">