如何在文件系统中组织和操作图片?

时间:2010-08-26 08:59:59

标签: asp.net image filesystems

虽然看起来似乎不是这样,但对这个问题有一点疑问。 我不是在问我是不是应该使用DB或文件系统,它是文件系统,但我想问一下在文件系统中组织图片的最佳方法是什么,将与asp.net应用程序一起使用? 我说的是几十甚至几十万张图片。

稍微详细说明一下。

  • 应该在哪里找到存储库,在IIS或应用程序VD中创建另一个VD,还是在IIS之外的某个地方创建?
  • 如何组织文件patsh,将它们全部放在一个文件夹中或创建子文件夹。如果是这样,如何命名所有这些文件夹?
  • 如何处理同一图像的多种尺寸?在哪里找到它们?
  • 如何使用数据库同步文件夹和图像?
  • 你还有什么想法,你认为这很重要..

我已经完成了一些事情,但我在问是否有人有这方面的经验。也许它可以做得更好。

我放了这样的东西

  • 我将图片存储在IIS文件夹中,因为将它们存储在iis之外会使它们因为路径而无法在Web中使用。您不能在Web中使用文件路径,它必须是虚拟文件路径。

    http://images/1.jpg取代C:\ images \ 1.jpg

  • 在根目录中我有每个图片大小的子文件夹

    根 -      + 400×300      + 600x400      1024×768 +

  • 来自数据库的id命名图像。如果数据库中的ImageID是45678909,图片的名称是45678909.jpg它的位置是

    VD \图像\ 400x300的\ 45 \ 67 \ 89 \ 45678909.jpg

    VD \图像\ 600x400 \ 45 \ 67 \ 89 \ 45678909.jpg

我将图片名称逐两切片,然后创建子文件夹。关键是文件夹中没有超过100个文件。这个好主意还是愚蠢的?你会如何组织这个?对于个人而言,这个拥有大量文件夹的组织并不容易使用。

  • 图像名称及其相对路径我保存在数据库表中,包含说明和插入时间等路径:45 \ 67 \ 89 \ 45678909.jpg

有任何建议或改进吗?

谢谢:)

2 个答案:

答案 0 :(得分:3)

你的最后一个解决方案似乎是一个非常好的解决方案。文件访问速度可能因一个文件夹中的文件太多而减慢,超过1000个说,所以坚持100是好的。

在同步方面,您只需要一个定期运行的脚本,该脚本在数据库中查询应该存在的所有图像,并删除冗余图像。如果你的磁盘空间不紧张,那么你就不需要了。

可能有时候您希望其他服务器上的图像具有更好的可扩展性。我唯一能做的就是为你的图片设置一个子域名,例如images.yourdomain.com。即使您将其指向同一台服务器,也可以根据需要将图像转移到更快的文件服务器上。

答案 1 :(得分:1)

1)我不知道ASP或IIS,所以我在这里帮不了你。我将图像存储在Amazon S3上,但我不知道这是否与您的案例相关。

2)尝试根据他们的模型组织照片,然后是ID。因此,如果图像是用户头像图像,则您的路径看起来像头像/ ID /图像。

3)如果您创建了多个不同尺寸的图像,请尝试为每个尺寸指定一个名称。例如,您有“原始”图像,“缩略图”图像(90x90)和“预览”图像(400 * 300)。这样您就可以存储不同的尺寸,如头像/ ID / image_SIZE或头像/ ID / SIZE /图像。

4)如果您按照我提到的方式进行操作,那么您只需要在数据库中存储原始图像的信息,然后就可以在运行时获取所有其他图像。

所有这些都来自Ruby on Rails的惊人PaperClip插件。请查看它以获取有关如何存储文件和附件的进一步指导。