Необходимо разрешить пользователям сортировать порядок файлов - PullRequest
0 голосов
/ 22 октября 2010

У меня есть веб-сайт, где администратор может войти и загрузить фотографии.Все изображения помещаются в каталог, а затем на другую страницу, я перебираю изображения и показываю их.Клиент спросил, есть ли способ перемещать изображения и размещать их в любом порядке.

Сейчас, глядя на сайт, я не уверен, в каком порядке файлы даже отображаются.Они определенно не в алфавитном порядке по имени файла.

У меня есть два вопроса

  • Существует ли стандартный способ сортировки или захвата файлов с помощью scandir?
  • Какое хорошее решение позволяет пользователю сортировать фотографии?

Ответы [ 2 ]

2 голосов
/ 22 октября 2010

Поскольку хранение информации о файле в базе данных создает избыточность и тем самым добавляет ненадежность, я бы выбрал специальный протокол именования файлов.Допустим, у вас есть a.png и b.png, сохраните их как 00001_b.png и 00002_a.png.При отображении файлов в вашем пользовательском интерфейсе: сортируйте файлы в алфавитном порядке после сканирования каталога, затем удалите префиксы из имен.Для простоты сделайте префикс фиксированной длины.

Изменение порядка PS является простым;если вы хотите поменять местами 00002_a.png и 00001_b.png, вам необходимо:

  • переименовать 00002_a.png в 00001_a.png
  • переименовать 00001_b.png в 00002_b.png
2 голосов
/ 22 октября 2010

Способ их сортировки зависит от файловой системы и обычно не гарантируется согласованность.

Вам нужно будет где-то хранить нужный заказ. Есть 3 способа сделать это.

  1. Используйте базу данных, в которой хранится желаемый порядок и имя файла. Затем вы можете получить список имен файлов, отсортированных по порядку. Если новые элементы добавляются в папку, они не будут изначально иметь заказ. Вам нужно будет установить порядок, когда они будут добавлены.

  2. Soft файлы по имени файла. Когда пользователь перезапустит файлы, вам нужно будет их переименовать. Самый простой способ - переименовать их по индексу в нужном порядке.

  3. Использовать индексный файл. Это будет похоже на параметр базы данных, но в каждом каталоге будет текстовый файл, в котором хранится информация о сортировке. Когда пользователь обновляет порядок, вы можете поместить все имена файлов в индексный файл в нужном порядке. Затем вы можете просто загрузить индексный файл и отобразить файлы по порядку. Если новый файл отсутствует в индексном файле, вы можете просто добавить его в конец.

...