首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数据库中存储图像的有效方法是什么?

问在数据库中存储图像的有效方法是什么?
EN

Stack Overflow用户
提问于 2014-04-08 10:19:14
回答 4查看 2.6K关注 0票数 1

在mySQL数据库系统中保存图像最有效的方法是什么?

  1. 选项1-将图像转换为BLOB数据类型,并将其保存在单独的列中

或

  1. 选项2-将图像保存在单独的文件夹中,并将文件路径保存在相关的数据库列中。
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-08 10:23:45

对于我来说,选项2是因为,对于我从其他文章中读到的内容,将图像转换为blob会使这个过程变得更慢。与存储路径不同的是,您只需检索到数据库的路径字符串,并且检索速度要快得多。

以下是与该在DB还是Nay中存储图像?相关的其他文章

票数 3
EN

Stack Overflow用户

发布于 2021-04-19 22:58:38

对于较大的图像,您应该使用文件系统,但是对于缩略图之类的小图像,这就是我使用打字机处理它的方法。

代码语言:javascript
复制
@Column({ type: "longblob" })
thumbnail: string;

顺便说一句,您应该在连接到同一台服务器的mysql控制台中运行此命令,以避免任何包大小错误。

代码语言:javascript
复制
set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000;

我使用内置的base64 API将图像转换为FileReader字符串。

代码语言:javascript
复制
// file param is coming from html input element
const reader = new FileReader();
// use try-catch because if user don't select a file it throws an error
    try {
      reader.onloadend = (e) => {
        const base64string = e.target.result;
        sendImageToServer(base64string);
        }
      }
      reader.readAsDataURL(file);
    } catch (error) {
      console.log(error);
    }

当您向客户端发送缩略图时,它会将其转换为缓冲区对象(例如。\

代码语言:javascript
复制
{
   type: "Buffer", 
   data: [
     // Uint8Array
   ]
}

所以我们需要再次将它转换为base64字符串

代码语言:javascript
复制
// This 'toString' function will convert buffer array to base64 string
const thumbnail = Buffer.from(recipe.thumbnail).toString();
sendDataToClient(thumbnail);

那么显示图像就很容易了。

代码语言:javascript
复制
// If you're using react like me you can do it like that 
<img src={base64stringFromServer} alt="thumbnail" />
// otherwise just select img tag with query selector then set 'src' attribute to 'base64stringFromServer
// and find a better variable name then this :)

我认为这是在数据库中存储图像的最佳方式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22934075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档