实战演练 | 使用 Navicat 在 MySQL 中存储图像

news/2024/7/3 0:36:45

近年来,Web应用程序中的图像数量一直在稳定增长。还需要在不同尺寸的图像之间进行区分,例如缩略图,网络显示图像等。例如,我最近开发的一个应用程序显示新闻项目,其中每个项目都有缩略图和主要文章图像。另一个应用程序显示大小的公司徽标。

大多数情况下,图像可以存储在网络服务器上,然后使用URL进行引用。这仅需要将路径字符串存储在数据库中,而不是图像本身。但是,有时这是不可行的,例如应用程序对文件系统的权限不足。在这些情况下,您可以将图像直接存储在数据库中,然后使用应用程序代码加载它们。

Navicat 开发和管理工具为图像管理提供了出色的支持。在今天的博客中,我们将学习Navicat如何使存储图像变得简单。出于演示目的,我将针对MySQL 8数据库使用 Navicat Premium (点击 这里,下载14天免费全功能试用版),但相同的过程也将适用于其他关系数据库。

设计表

在MySQL中,用于图像存储的首选数据类型是BLOB。 但是,实际上有三种BLOB。 选择哪种图像取决于要存储的图像大小。 如有疑问,请转到更大容量的BLOB! 以下是三种BLOB类型:

  • BLOB:最多可以处理65,535字节的数据。
  • MEDIUMBLOB:支持的最大长度为16,777,215字节。
  • LONGBLOB:最多存储4,294,967,295字节的数据。

考虑到这一点,这是一个非常适合缩略图图像的表定义,但不会太大:

除了图像本身,您可能会发现存储有关图像的其他信息也很有用,例如ID,名称,描述,大小,类型(JPEG,GIF,BITMAP等),类别等。

将图像加载到images表中

使用Navicat,无需编写SQL代码即可加载图像。 相反,您可以使用标准的文件浏览器来查找和插入图像文件。

无论何时在“网格”或“表单”视图中查看表内容,都可以从数据类型下拉列表中选择希望Navicat处理数据的方式:

从下拉菜单中选择“图像”会在表/行内容下方添加一个图像预览窗格:

在文件预览的左侧,您将找到三个图标:“加载”,“保存到磁盘”和“清除”。 要加载图像,只需单击“加载”图标,然后使用操作系统的标准“文件浏览器”对话框选择图像。 插入后,图像及其大小(以字节为单位)将显示在预览窗格中:

请注意,上图需要MEDIUMBLOB,因为其大小超过65,535字节!

总结

在今天的博客中,我们学习了如何使用Navicat Premium 将图像存储在 MySQL 8数据库中。

往期回顾

1. 盗版引发设备瘫痪 | 官方严正声明:切勿在非官方渠道购买或下载 Navicat 软件

2. Navicat 荣获 Microsoft 金牌合作伙伴

3. Navicat 16.3 正式支持 OceanBase 企业版

4. 免费试用 Navicat 16

5. Navicat 发展史

6. SQL 语句中 WHERE 1=1 的作用

7. 在 SQL 中计算总行数的百分比

8. 互动有礼活动进行中 | 奖品为价值 819 元 Navicat Premium

9. Navicat NAPP 校企合作和申请免费一年期的 Navicat Premium 教育版


http://lihuaxi.xjx100.cn/news/327548.html

相关文章

蛋白类产品改性 荧光标记;偶连抗体多肽或者聚合物或其他小分子偶连蛋白文章介绍

蛋白类产品改性 荧光标记;偶连抗体多肽或者聚合物或其他小分子偶连蛋白 修饰改性荧光标记的蛋白有: BSA牛血清白蛋白, HAS人血清白蛋白, Streptavidins链霉亲和素,Concanavalin A 刀豆球蛋白 Transferrin 转铁蛋白, Protein A 重组蛋白A, Protein G 重…

sokcet常用配置

非阻塞模式 套接字有两种工作模式: 阻塞模式: 阻塞调用是指调用结果返回之前,当前线程会被挂起。该进程被标记为睡眠状态并被调度出去。函数只有在得到结果之后才会返回。当socket工作在阻塞模式的时候, 如果没有数据的情况下调…

HikariCP实战 | 通过查看源码分析如何解决maxLifeTime配置问题

目录1、追本溯源2、解决hikariCP的maxLifetime配置出现以下warn问题3、具体解决步骤(查看源码)1、追本溯源 很多年前在stackoverflow上写过一篇文章: https://stackoverflow.com/questions/28180562/hikaricp-and-maxlifetime# hikariCP是非…

基于web的老年保健品销售系统/保健品销售系统

摘 要 为了解决用户便捷地在网上购物,本文设计和开发了一个老年保健品销售系统。本系统是基于web架构设计,SSM框架 ,使用Mysql数据库管理,综合采用JSP模式来完成系统的相关功能。主要实现了管理员与用户的注册与登陆&#xff0…

计算机毕业设计Java汽车售后服务管理系(源代码+数据库+系统+lw文档)

计算机毕业设计Java汽车售后服务管理系(源代码数据库系统lw文档) 计算机毕业设计Java汽车售后服务管理系(源代码数据库系统lw文档)本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术&#xf…

Polygon zkEVM中的子约束系统

1. 引言 前序博客有: Polygon zkEVM工具——PIL和CIRCOM Polygon zkEVM中主要设计了3种子约束系统: 1)Permutation check子约束系统:PIL中的关键字为is。 2)Plookup 子约束系统:PIL中的关键字为in。 …

d原子是无锁的吗

原文 文档说: 原子方式加mod到val引用的值,并返回先前val保存的值.此操作是无锁且原子的. 查看实现是: lock; xadd[%0], %1;真是无锁的吗?可用cas来替换吗?伪码: int atomicFetchAdd(int * pAddr, int nIncr ) {while (true) {int ncur atomicLoad(pAddr);if (cas( pAddr,…

OpenStack 创建虚拟机错误: Host ‘compute1‘ is not mapped to any cell

之前 Ubuntu 20.04 手动安装OpenStack只做到了 Networking service Installation Guide 这一步,然后就不继续了,以为最困难的都过去了 今天临时想要创建一个虚拟机,发现从命令行方式和 DashBoard 创建虚拟机,都报错了&#xff01…