【问题标题】:Best way to handle image uploads in MySQL? [duplicate]在 MySQL 中处理图像上传的最佳方法是什么? [复制]
【发布时间】:2014-02-28 19:40:04
【问题描述】:

在此之前,我从未使用图像填充数据库。当我谈到它时,我将处理实际的上传脚本,但现在我在 phpMyAdmin 中创建表并且看不到任何相关的数据类型。

这甚至是正确的方法吗,还是将图像存储在文件系统中并仅将路径或文件名存储在数据库中会更好?如果这样做,我应该对文件名做些什么来“清理”它,例如用随机字符串重命名所有文件。

谢谢

【问题讨论】:

  • 你后面的想法是我会做的;将文件名和随机字符串存储到数据库中,当您存储文件时,将其命名为该随机字符串。
  • 是的,请考虑一下。在数据库中,我将存储用户上传的文件名、由脚本或自动递增 ID 生成的唯一文件名、完整的服务器文件路径、允许 URL 访问的公共文件路径、文件类型、文件大小、上传日期时间。将文件存储在文件系统中时,然后将其重命名为自动递增的 ID。
  • @MonkeyZeus 真的有必要吗?公共文件路径肯定可以硬编码到拉取图像的脚本中,我原以为可以使用某种函数从文件本身收集文件大小/类型和其他元数据,尽管在我的情况下我不能预见我需要。
  • 要将文件存储在数据库中,您需要设置适当的数据类型。请参阅有关 blob 数据类型的参考手册:dev.mysql.com/doc/refman/5.6/en/blob.html

标签: php mysql image file-upload phpmyadmin


【解决方案1】:

首先,您需要将文件上传到任何预定义的文件夹中,然后您可以将该文件的名称存储在您的数据库中(使用 varchar 数据类型)。

当您获取该记录时,使用该文件名在您需要显示的任何位置显示图像。

【讨论】:

  • 所以当涉及到我的 PHP 脚本时,代码必须执行以下功能:1)在指定文件夹中上传和存储文件 2)用随机字符串重命名文件 3)将随机字符串(文件名)存储在数据库。对吗?
  • 是正确的,并使用该名称在任何应用程序需要的地方重新创建图像路径。
【解决方案2】:

有几个答案解释了如何将实际图像的路径存储在数据库中,同时将文件本身保存在磁盘上。我也会这样做,但 MySQL 允许您将其存储为 BLOB data type(或 TINYBLOB、LONGBLOB 等子类型)。 phpMyAdmin 有一个名为transformations 的功能,然后您可以直接从 phpMyAdmin(或其他有趣的各种数据类型的显示操作)查看该图像的预览,这很简洁。

再一次,如果是我,我也会把它存储在磁盘上,我只是在回答你问的关于你会使用什么数据类型的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-15
    • 2018-09-19
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 2010-09-10
    相关资源
    最近更新 更多