1

一点背景资料:前任项目经理因未按时交付项目而被解雇。我几乎没有编码经验,但现在正在带领团队完成网站。

该网站本身与 Ebay 相似,其中添加了待售商品。图像和文档将与项目相关联,但托管在上传图像时创建的文件夹中。开发团队问我“如何管理包含与项目列表相关的文档的文件夹”。每个项目将上传 1-10 个图像/文档,并且将在一个时间点列出 1000-2000 个项目(如果不是更多)。

环顾四周,我认为最简单的解决方案是按项目编号命名文件夹并列出 MySql 中的引用。每个项目都有一个单独的项目编号,并且不应重复。文件夹管理有更好的解决方案吗?

4

3 回答 3

2

正如先生所说,可以使用 productid-docid-imageid-timestamp 重命名图像如果不经常检索图像,将图像作为 blob 存储在 db 中并使用不同名称打印图像可能会有所帮助。

于 2013-08-27T05:39:24.160 回答
1

您要注意的是,大多数文件系统对一个文件夹中可以存储的项目数量有限制。在 Linux 上,限制通常在 30000 左右。根据您提供的数字,那里应该没什么问题,但您仍然应该为系统做好计划,以适应未来的发展。

我发现通过散列存储图像非常有用。例如,创建图像的 SHA1 哈希,例如:cce7190663c547d026a6bf8fc8d2f40b3b1b9ea5. 然后将图像存储在基于此哈希的目录结构中,其中包含几级文件夹:

cce/719/066/3c5/cce7190663c547d026a6bf8fc8d2f40b3b1b9ea5.jpg

这使用散列的前 12 个字符形成 4 层深的文件夹结构,然后文件名是整个散列。根据需要增加或减少文件夹深度。这使您可以存储相当多的图像(((16^3)^4)*限制)而不会达到文件系统限制。然后将此路径与有关图像及其所属项目的其他信息一起保存在数据库中。此方法还可以有效地对您的数据存储进行重复数据删除,您将永远不会存储相同的图像两次。

于 2013-08-27T05:38:44.120 回答
0

过去,如果目录中的文件过多,文件系统性能会下降,因此普遍的看法是将任何目录中的项目限制为约 1,000 个。

尝试围绕 item_id(填充)创建一个目录结构,因此 #1002003 可能是 001002003,可以在 001/002/001002003.jpg 中找到。

由于您要为每个项目存储多个图像,因此您可能还有一个级别,例如 001/002/003/001002003_1.jpg。

使用完整 ID 作为最终目录中的项目名称(001002003.jpg,而不是 003.jpg)。以后会派上用场的。

希望有帮助。

于 2013-08-27T05:37:10.627 回答