简体   繁体   English

使用 node.js 从 mysql 数据库中获取图像

[英]Fetch image from mysql database using node.js

I have stored my images in mysql database.When I am trying to retrieve them I am getting my image along with a lengthy string of buffer.Here goes my code:我已将我的图像存储在 mysql 数据库中。当我尝试检索它们时,我正在获取我的图像以及一长串缓冲区。这是我的代码:

var sql ="SELECT rname,image FROM recipes WHERE ringre LIKE '%" +items[0]+"%' ";
    for( var i=1;i<items.length;i++){
        sql = sql + "AND ringre LIKE '%"+items[+i]+"%' ";
    }

    console.log(sql);

    con.query(sql, function(err,result){
        if(err){
            throw err;
        }else{
            console.log(result);
            var result1 = JSON.stringify(result);
            res.render("recipes_response",{ data: result[0].image.toString('base64'), recipes: result1});
        }
    });

 });

and the result is:结果是: 在此处输入图像描述

But I just want the image and rname.但我只想要图像和 rname。 Will anybody help me out?有人会帮我吗?

I'm assuming that you're using EJS templates, so if you write:我假设你正在使用 EJS 模板,所以如果你写:

con.query(sql, function(err,result){
    if(err){
        throw err;
    }else{
        res.render("recipes_response", { data: result[0].image.toString('base64'), rname: result[0].rname});
    }
});

Then in your /views/ folder create recipes_response.ejs然后在您的 /views/ 文件夹中创建 recipes_response.ejs

recipes_response.ejs recipes_response.ejs

<html>
<body>
    <div class="container">
        <h3>Image test</h3>
        <div>
            <h4>Recipe name: <%= rname %></h4>
            <img src="data:image/png;base64, <%= data %>" alt="DB Image" />
        </div>
    </div>
</body>
</html>

Multiple Recipes多个食谱

con.query(sql, function(err,result){
    if(err){
        throw err;
    }else{
        let recipes = result.map(row => { return { rname: row.rname, image: row.image.toString('base64')}});
        res.render("recipes_response_list", { recipes } );
    }
});

Then create a new template:然后创建一个新模板:

recipes_response_list.ejs recipes_response_list.ejs

<html>
<body>
    <div class="container">
        <h3>Recipes</h3>
        <%  for (let recipe of recipes){ %> %>
        <div>
            <h4>Recipe name: <%= recipe.rname %></h4>
            <img src="data:image/png;base64, <%= recipe.image %>" alt="Recipe image" />
        </div>
        <% } %>
    </div>
</body>
</html>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM