簡體   English   中英

如何使用mongoose.js驅動程序和express.js保存和查詢mongodb中的圖像等二進制數據?

[英]How save and query in binary data like images in mongodb with mongoose.js driver and express.js?

嗨,我的問題是如何在我的mongodb商店中保存和查詢圖像我知道插入字符串的基本方法,創建,更新和刪除這個但是當我嘗試保存

var UserSchema=new Schema({
    username:String,
    img:{ data: Buffer, contentType: String }
}); //UserSchema

var modelo=mongoose.model('reserv',UserSchema)//model DB

app.post('/upload',function(req,res){
    var img=req.files.imagen

    var imagen=new modelo ({
        username:'name',
        img:{
            data:fs.readFileSync(img.path),
            contentType:img.type,
        }   
    }).save(function(err,docs){
        if(err){
            console.log(err);
        }else{
            console.log('saved');
            res.redirect('/profile')
        }
    }); //return  img saved like binary format 'BJSON' [BSON][1] some thing iVBORw0KGgoAAAANSUhEUgAAB4AA.....

});

到目前為止這么好但現在當intentento讀取數據庫翼二進制格式的圖像存儲變得幾乎不可能使用這種格式構成它的巨大字符並且不知道如何解碼它更易於在jade或ejs模板的視圖中提供服務express.js的引擎如果有人知道如何解碼或壓縮將是一個很大的幫助:)

app.get('/profile',function(req,res){

    modelo.findOne({username:'que'},function(err,docs){
        if(err) return err;
        res.render('perfil',{info:docs.img.data})
    });

});

具體問題是我需要知道如何將二進制格式圖像文件中的數據轉換為服務或無法小網址。

您應該使用GridFS保存文件,然后為該文件設置單獨的端點。 在頁面渲染上,您應該生成一個獲取該文件的URL。

在上傳時,我強烈建議將文件目錄從請求流式傳輸到數據庫並在下載時直接回流到響應。

有一些模塊可以幫助你解決這個問題。 express-file-store看起來像是一個很好的實現。 由於它支持多個后端,您可以根據配置進行更改(使用開發時的文件系統和生產中的gridfs,如果有任何機會決定更改后端,可以輕松將其更改為S3)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM