gpt4 book ai didi

design-patterns - 如何重命名/存储上传到电子商务应用程序的图像?

转载 作者:行者123 更新时间:2023-12-04 07:20:04 25 4
gpt4 key购买 nike

我正在用 PHP 编写我的第一个在线商店。现在正在处理“添加产品”表单,我不确定如何存储图像。

我认为我应该:

  1. 检查是不是这张图片
  2. 将图像调整为我店中使用的“标准”尺寸并生成缩略图
  3. 生成唯一的文件名并将图像存储在“images”目录中
  4. 使用唯一的文件名保存图像并将行插入到我的图像表中

我用这样的列创建了表:

  • 身份证
  • 位置 - 图片的 url - 例如“/0953026326323436324.jpg”
  • OriginalFilename - 用户上传文件的原始名称 - 例如“myproduct1.jpg”

问题:

  1. 有没有更好的方法来做到这一点?
  2. 我应该使用 Images 表中的 ID 作为唯一文件名,还是继续生成唯一名称(通过使用 PHP 函数)?
  3. 我应该生成 md5 哈希并将其存储在图像表中以避免/处理重复项吗?

编辑 2012-03-03:我所说的重复是指内容相同(但名称可能不同)的文件。

我不使用任何框架,那将是一个简单轻量级的在线商店。

最佳答案

这实际上取决于您的应用程序如何处理这些图像。这些是我从经验中学到的一些东西......

有多少张图片?如果我们谈论的是数千张图片,请记住,包含这么多文件的文件夹可能无法通过 FTP 访问。如果您需要访问它们,您可以将它们分类并放在不同的子文件夹中。分类可以通过很多东西来完成……从大小到奇数/偶数 ID 号。这完全取决于您需要将它们分开多少。

它们是私有(private)图像吗?它们应该公开访问吗?如果您仅使用 ID 作为唯一标识符,则很容易猜测和找到其他图像,因为它们很可能是自动递增的。在这些情况下,您可以生成更安全的名称,只需抛出用户 ID、时间戳、随机数、哈希或任何组合...

对名称进行哈希处理?您不会因此获得任何额外的安全保障。如果您已经在使用名称的组合,那么散列它只是一件额外的事情。假设您使用 [image_id]_[timestamp] 作为名称,如果对其进行哈希处理,则会丢失该信息。您的数据库中确实有它,但将它放在文件名中也很好。如果出于某种原因,您需要删除某些文件,那么如果您能识别它们会更容易。而且,回到您可能拥有的图像数量......MD5 中可能存在冲突。这意味着 2 个文件将获得相同的名称..(这真的很少见,但它可能会发生)


因为它是一家商店,我猜您不需要图像名称的额外安全性,但您可能需要额外的分类。

顺便说一句,根据你的步骤,你不能使用图像的 ID 作为文件名,因为你在保存图像后将行插入到表中。

如果您需要更多详细信息,请发表评论。

关于design-patterns - 如何重命名/存储上传到电子商务应用程序的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com