有没有办法让用户直接在cloudinary上上传图像,并将图像的url存储在Node.js应用程序中的我的mongoDB数据库中

有没有办法让用户直接在cloudinary上上传图像,并将图像的url存储在Node.js应用程序中的我的mongoDB数据库中,node.js,mongodb,file-upload,cloudinary,Node.js,Mongodb,File Upload,Cloudinary,我目前正在使用multer存储图像,以公开上传文件夹,然后使用缓冲区将图像转换回64位以显示它,我认为这会使网站速度变慢。 我知道我对这一切都不熟悉,真的需要一步一步的程序和解释。多谢各位 App.js-> const blogSchema=new mongoose.Schema({ name:String, title:String, image:String, body:String, uploadImg:{ data: Buffer, contentType: Stri

我目前正在使用multer存储图像,以公开上传文件夹,然后使用缓冲区将图像转换回64位以显示它,我认为这会使网站速度变慢。 我知道我对这一切都不熟悉,真的需要一步一步的程序和解释。多谢各位

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
}})
多媒体和存储->

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 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">
;base64,“alt=“someImage”>

为什么您需要将图像显示为base64,而不是通过其URL引用它?这应该不会让它变得很慢,但这似乎是一个不必要的步骤。我明白了,但我的实际问题是,如何一次性将图像上传到cloudinary及其在Mongo db数据库中的URL。或者是否有更好的功能选项。我我不确定“一次性”是什么意思,但你可以使用Cloudinary的SDK上传图像,然后根据收到的上传API调用的响应将详细信息存储在数据库中-Cloudinary的节点SDK可以在这里找到:为什么你需要将图像显示为base64而不是通过其URL引用它?这应该不会让它太慢,但这似乎是一个不必要的步骤,我明白了,但我的实际问题是,如何一次性将图像上传到cloudinary及其在Mongo db数据库中的URL。或者是否有更好的功能选项。我不确定“一次性”指的是什么,但您可以使用cloudinary的SDK上传图像,然后存储详细信息根据您收到的上传API调用响应,在您的数据库中,可以在以下位置找到Cloudinary的Node SDK:
<img src="data:blog/<%=blog.uploadImg.contentType%>;base64,<%=blog.uploadImg.data.toString('base64')%>" alt="someImage">