Database 我应该如何为用户设置图片上传表?

Database 我应该如何为用户设置图片上传表?,database,zend-framework,image-upload,database-design,Database,Zend Framework,Image Upload,Database Design,我想创建一个图像上传用户上传个人资料图片,并能够调整它的大小。但是,我想知道如何处理数据库表。我想我应该为用户id和图像名称设置一个字段,但很明显,会有冲突,这让我想到哈希表,这似乎是一种过激的做法,所以我想我会在这里询问,希望更具知识的人能给我一些想法 我正在使用Zend Framework供您参考。一个简单的方法是在用户首次上传图像时创建一个子文件夹(文件夹的名称也可以是用户id)。然后,您可以将用户图像存储在其自己的子文件夹中。这样,您将避免许多碰撞问题。使用此解决方案,您可以得到一个非常

我想创建一个图像上传用户上传个人资料图片,并能够调整它的大小。但是,我想知道如何处理数据库表。我想我应该为用户id和图像名称设置一个字段,但很明显,会有冲突,这让我想到哈希表,这似乎是一种过激的做法,所以我想我会在这里询问,希望更具知识的人能给我一些想法


我正在使用Zend Framework供您参考。

一个简单的方法是在用户首次上传图像时创建一个子文件夹(文件夹的名称也可以是用户id)。然后,您可以将用户图像存储在其自己的子文件夹中。这样,您将避免许多碰撞问题。使用此解决方案,您可以得到一个非常简单的表,如:

IMAGE (UserId, ImageName, IsMain)

ImageName可以或不能(按您最喜欢的方式)包含子文件夹名称(因为它与用户ID相同)。

这可能不是您问题的确切答案。然而,这可能是一个建议

如果你想在数据库中保存图像或文件,你必须维护很多东西。有很多讨论,你可以通过“数据库或文件夹中的图像”在谷歌中搜索

我建议您将图像保存在文件夹中,而不是数据库中。因此,在数据库中,只需将图像的“路径”作为列保留

换句话说,用户表可以有一列,如下所示:

profile_image_path varchar2(200)
而不是将整个图像保持为

 profile_image blob
此解决方案的优点是:

  • 您可以让Apache将图像作为统计内容处理(如果您将其保存在数据库中,则可以将其视为动态内容)
  • 您不必担心如何在数据库中渲染图像,只需渲染为路径即可
  • 您可以忘记在数据库中维护大数据(只需考虑备份、导入、导出数据库中10000个图像等)
此解决方案的缺点是:

  • 您必须与数据库分开维护备份。然而,这不是更多的工作,因为您必须备份php、文件等

你可以在谷歌上阅读更多细节。

它可能仍然存在名称冲突。例如,图像名称相同。我想把一个约会连在一起,你觉得怎么样?或者你有更好的建议吗?@Doug事实上我说的是“避免很多碰撞问题”,而不是全部。无论如何,我确信方法是连接一个时间戳,而不仅仅是日期。无论如何,您可以随时询问用户是否要用相同的名称替换图像。