需要允许用户对文件顺序进行排序

时间:2010-10-22 17:07:48

标签: php sorting file-io

我有一个网站,管理员可以登录并上传照片。所有图像都放在一个目录中,然后放在另一个页面上,我在图像中循环并显示它们。客户询问是否有办法移动图像并按照他们想要的任何顺序放置它们。

现在查看网站,我不确定文件的显示顺序。它们绝对不是按字母顺序排列的。

我基本上有两个问题

  • 是否有使用scandir对文件进行排序或抓取的标准方法?
  • 允许用户对照片进行排序有什么好方法?

2 个答案:

答案 0 :(得分:2)

它们的排序方式取决于文件系统,通常不保证一致。

您需要在某处存储所需的订单。我有三种方法可以做到这一点。

  1. 使用存储所需顺序和文件名的数据库。然后,您可以获取按顺序排序的文件名列表。如果将新项目添加到文件夹,则它们最初不会有订单。您需要在添加订单时设置订单。

  2. 按文件名软件文件。当用户对文件进行调度时,您需要重命名它们。最简单的方法是按所需顺序通过索引重命名它们。

  3. 使用索引文件。这与数据库选项类似,但每个目录中都有一个存储排序信息的文本文件。当用户更新订单时,您可以按所需顺序将所有文件名放入索引文件中。然后,您可以只加载索引文件并按顺序显示文件。如果新文件不在索引文件中,您只需将其添加到最后。

答案 1 :(得分:2)

因为在数据库中存储文件信息会产生冗余,从而增加了不可靠性,所以我会选择一种特殊的文件命名协议。假设您有a.png和b.png,将它们存储为00001_b.png和00002_a.png。在用户界面中显示文件时:扫描目录后按字母顺序排序文件,然后从名称中删除前缀。为简单起见,请将前缀设为固定长度。

P.S。重新排序很简单;如果您想要交换00002_a.png和00001_b.png,您将不得不:

  • 将00002_a.png重命名为00001_a.png
  • 将00001_b.png重命名为00002_b.png