您可以将图像存储在存档系统的文件夹中

Images you can store in a folder for archiving system

我正在创建一个存档系统,让我可以将扫描的文件存储在一个目录中。我将图片放在一个名为上传的目录中。

我在 windows 基础 XAMPP 服务器中使用 Laravel 框架制作了系统。

截至目前,我在该目录中存储了 12,000 张图像,发现搜索不是问题。但我担心将来会很麻烦。

所以任何推荐或将百万图像存储在一个目录中都可以。?

从技术上讲,一个目录中可以有这么多文件,ext2/ext3 文件系统一个目录中最多可以有 ~ 1020 个文件,但是访问它们可能会很慢, 通常根据经验 - 一个目录中的文件不要超过 10-20,000 个,以避免性能问题。

加上例如 FAT32 不支持超过 65k

How many files can I put in a directory?

因此您可以根据您的负载将它们按照某种模式划分为子目录,例如 year/month/day/username/etc。

我有一个系统,每天存储大约 0.5-2k 个文件并使用文件路径 base_dir/year/month/day/fulldate_filename.extension。这样我以后可以轻松地将存档分成几卷,并且几乎可以立即按日期搜索。

希望这有助于消除您的顾虑:

One thing that worries me is that images that will be stored in that directory can go about millions.

现在的硬件能够以低廉的价格处理大量文件,这在很大程度上取决于您正在构建的平台以及这些文件增长的比例。但是,如果您不想自己管理它,像 Amazon S3 这样的解决方案可以提供帮助。

在目录的情况下,最好使用一种机制来帮助您将这些文件拆分为多个文件,例如使用文件名的前 2-3 个字符来构建一个目录,您可以将文件存储在: test.doc 会变成 t/e/s/test.doc

The files will be corrupted or will reach file limit.

如果上传过程成功完成,文件损坏的情况需要处理更多的逻辑;取决于文件类型,例如 this

The searching of images could be very slow

索引是您最好的解决方案,拥有所有文件及其路径的数据库,这将使您轻松直接访问文件而无需搜索它们;例如,保留 namepath 和其他信息。

如果你说的是搜索他们的内容,如果不仅仅是图片,我建议你看看基于 Lucene 的产品,比如 Solr or Elastic Search