开发者社区 问答 正文

mysql能存储图片吗

想把图片存储在MySQL,我应该怎么存储?

是存储图片路径呢 还是读取图片的二进制数据,然后写入进去?

展开
收起
道月芬1 2021-10-12 16:14:12 512 分享 版权
阿里云 AI 助理回答

在MySQL中存储图片,您有两种主要方式:

  1. 存储图片路径

    • 这种方法是将图片保存在服务器的文件系统或其他存储服务上(如OSS),然后在MySQL数据库中仅存储图片的路径或URL。这样做的好处是可以减轻数据库的负担,因为数据库不需要存储大量的二进制数据。参考案例一中的image表设计,您可以创建一个包含图片ID、图片地址和类型等字段的表。
    CREATE TABLE image(
        id bigint(20) COMMENT '主键id',
        image_address VARCHAR(255) COMMENT '图片存储地址', 
        type int(8) COMMENT '图片类型', 
        PRIMARY KEY(id)
    );
    

    插入数据示例:

    INSERT INTO image(id, image_address, type) VALUES(1, 'https://xxx/image.bmp', 1);
    
  2. 存储图片的二进制数据

    • 另一种方法是直接将图片读取为二进制数据,然后将其作为BLOB(Binary Large Object)类型存储在数据库中。这种方式下,图片本身成为数据库记录的一部分,可以减少对外部存储的依赖,但可能增加数据库的存储空间需求和查询压力。如果选择此方案,您需要在MySQL表中定义一个BLOB或MEDIUMBLOB类型的字段来存放图片数据。

    例如,扩展image表结构以包含图片的二进制数据:

    ALTER TABLE image ADD COLUMN image_data MEDIUMBLOB;
    

    然后,通过编程语言(如Java、Python等)的数据库驱动程序,读取图片文件并转换为二进制流插入到image_data字段中。

建议:通常推荐使用第一种方法(存储图片路径),因为它更有利于资源管理和性能优化。数据库更适合处理结构化数据,而大体积的二进制数据更适合存储在专门的文件存储系统中。此外,这种方法也便于利用CDN等技术加速图片访问速度,提升用户体验。

请根据您的具体需求和系统架构选择合适的存储策略。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答