Php 数据库设计和图像文件系统管理?
我正在寻找建立一个后端,用于接受用户上传的图像,重命名它们并将它们存储在文件系统中(不,它不是Instagram) 我想简单地重命名图像并将其存储在用户文件夹中: images/{userid}/{userid}{md5(timestamp)}.jpg 这些协会也将包括在数据库中Php 数据库设计和图像文件系统管理?,php,mysql,image-processing,image-management,Php,Mysql,Image Processing,Image Management,我正在寻找建立一个后端,用于接受用户上传的图像,重命名它们并将它们存储在文件系统中(不,它不是Instagram) 我想简单地重命名图像并将其存储在用户文件夹中: images/{userid}/{userid}{md5(timestamp)}.jpg 这些协会也将包括在数据库中 这是一个好的/足够的模型吗?基本上,你的方法很好,但以下是我给你的建议: 不要在文件名中使用时间戳,因为您已经在数据库中存储了文件名,只需为时间戳创建额外的列即可 文件关系。这样更容易管理像“原创”这样的东西 创建、
这是一个好的/足够的模型吗?基本上,你的方法很好,但以下是我给你的建议:
- 不要在文件名中使用时间戳,因为您已经在数据库中存储了文件名,只需为时间戳创建额外的列即可 文件关系。这样更容易管理像“原创”这样的东西 创建、上次修改,甚至过期日期
- 确保存储文件名的列是唯一的。您不希望意外地存储重复的文件名
- 在接受文件时进行交叉检查。如果文件已成功保存到服务器,但查询失败,请确保删除 失败时存档。或者,如果操作顺序颠倒,请删除 如果文件未能保存到服务器,则数据库中的条目
- 如果不允许公开访问这些图像,您可以拒绝正常查看这些图像,而是将用户引导到 将文件名作为GET变量链接(PHP文件)。那你可以 检查会话和/或cookie,以确定它们是否被授权 查看它。如果是,您可以将输出的标题设置为 jpeg或他们正在查看的任何类型的文件
user/{database_id}.jpg
这取决于:
- 每个用户有多少个图像
- 每个图像的大约尺寸范围
- 有多少用户
- 您期望什么样的并发性
另一个问题:你会一直只提供原始图像,还是有时会发回重新缩放的副本?您可能希望缩放一次并始终返回预缩放的版本,在这种情况下,您还需要考虑这些缩放副本的存储。好/足够的模型用于什么?我认为使用时间戳存储文件名是一种很好的做法,因为它将使所有文件名都是唯一的。这是真的,但我想我想说的是,不要依赖它们来获得准确的时间戳。但是我想如果它们是md5的话,你无论如何也不能:P无论如何,使用rand()生成随机字符串比md5(time())性能更好我会使用timestamp而不使用md5()在任何情况下都是唯一的。在流量足够大的网站上,时间戳不一定是唯一的。@TobyAllen感谢您指出这一点。我没有想到。我真的不想让人们通过1.jpg,2.jpg etcOk轻松访问整个图像库,然后生成一个GUID,将其放入数据库并在其后调用文件名,同样的结果也会减少安全问题。