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

Mysql 在数据库中存储图像的有效方法是什么?,mysql,database,image,Mysql,Database,Image,在mySQL数据库系统中保存图像最有效的方法是什么 选项1-将图像转换为BLOB数据类型,并将其保存在单独的列中 或 选项2-将图像保存在单独的文件夹中,并将文件路径保留在相关数据库列中 选项2对我来说是因为,就我从其他文章中读到的,将图像转换为blob会使过程变慢。与存储路径不同,您只需将其路径字符串检索到数据库,检索速度要快得多 以下是其他相关文章,请通过以下链接 我建议这样回答:-在文件系统中存储大图像。在数据库中存储缩略图之类的小图像对于较大的图像,您应该使用文件系统,但对于缩略图之类的

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

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

选项2-将图像保存在单独的文件夹中,并将文件路径保留在相关数据库列中
选项2对我来说是因为,就我从其他文章中读到的,将图像转换为blob会使过程变慢。与存储路径不同,您只需将其路径字符串检索到数据库,检索速度要快得多


以下是其他相关文章,请通过以下链接


我建议这样回答:-在文件系统中存储大图像。在数据库中存储缩略图之类的小图像

对于较大的图像,您应该使用文件系统,但对于缩略图之类的小图像,我就是这样处理的

@列{type:longblob} 缩略图:字符串; 顺便说一下,您应该在连接到同一服务器的mysql控制台中运行此命令,以避免出现任何包大小错误

设置全局净缓冲区长度=1000000; 设置全局最大允许分组数=100000000; 我使用内置的FileReader API将图像转换为base64字符串

//文件参数来自html输入元素 const reader=新文件读取器; //使用try-catch,因为如果用户未选择文件,则会抛出错误 试一试{ reader.onloadend=e=>{ const base64string=e.target.result; sendImageToServerbase64string; } } reader.readAsDataURLfile; }捕捉错误{ console.logerror; } 当您向客户端发送缩略图时,它会将其转换为缓冲区对象\

{ 类型:缓冲区, 数据:[ //UINT8阵列 ] } 所以我们需要再次将其转换为base64字符串

//此“toString”函数将缓冲区数组转换为base64字符串 const thumbnail=Buffer.fromrecipe.thumbnail.toString; 发送数据到客户端缩略图; 然后显示图像是非常容易的

//如果你像我一样使用react,你可以这样做 //否则,只需使用查询选择器选择img标记,然后将“src”属性设置为“base64stringFromServer” //然后找到一个更好的变量名:
我认为这是在数据库中存储图像的最佳方式。

选项2是更好的方式,将图像存储在文件系统中是好的。1。无论何时提出问题,请尝试先搜索现有的相同问题,这将减少重复。提供的答案和评论有点误导。如果您将映像保存到db,则速度较慢,但如果您使用的复制方式比听起来更麻烦,则可以将映像复制到多个服务器,但从理论上讲,它为您获取映像提供了一定的可靠性。规则应该是-如果您在一台服务器上运行整个网站,那么最有效的方法是将映像路径存储到db,并将映像存储到文件系统。如果您在集群环境中,那么将图像保存到数据库的操作可能会完全不同,因为您可能不会使用MySQL来实现这一点