Структура папки Upload

загрузка и сортировка файлов в папке Upload

#1 6 февраля 2020 в 03:28
Меня долгое время мучает вопрос по поводу папки Upload в которой хранятся и сортируются загруженные файлы и изображения.
В этой папке очень много подпапок и подпапок, они для меня нумеруются (сортируются) непонятным образом, не могу понять в какую папку что загружается и откуда…
Можно как то разьяснить суть работы ?
Как все это работает и почему такие названия и что за что отвечает и тому подобное ??
Прикрепленный файл
Screenshot7_34ksg.png 18 Кб
#2 6 февраля 2020 в 09:13
Эндрю Ua, может быть вам поможет эта тема.
#3 6 февраля 2020 в 12:35
"максимум 65792 папок у каждого пользователя"
Есть хостинги с ограничением на количество файлов, на самых низких тарифах, на пример, 1000 000 файлов. Если даже сжимать изображения, то в некоторых случаях может быстрее закончится количество файлов чем место на диске.
#4 6 февраля 2020 в 19:59


Эндрю Ua, может быть вам поможет эта тема.

@IamB
Дискуссия там конечно не слабая, но ушла тема в лес и все вернулось к началу sad
Я понял, что это боль многих… не только моя.

Просто очень сложно понимать и искать файл, так как из админки удалять и искать изображения или загруженные файлы тоже нет возможности. Это не удобно, когда тебе нужно зачистить определенные файлы после правки на сайте разделов. Или удаления темы и т.п.

В общем решения как такового я не понял, идеи и примеры были с объяснением но вот выхода из рутины не нашел.
Но спасибо за разъяснение всем тем, кто ввел подобное обсуждение в той теме и на многое раскрыл глаза, но логики в таком решении я не нашел😊Особенно 16 -тиричной системе и рандомном названии папки. Это полный трешь .
Вот хотябы по датам сортировка папок, очень бы облегчила ситуацию но а лучше конечно отдельно папку пользователя и папки для изображений групп, альбомов, статей… что бы как то сортировать лояльно...

И если речь о переполнении файлов в папке, то почему ни сделать сортировку по датам ??? А не произвольно… Не пойму.
#5 8 февраля 2020 в 12:44
Эндрю Ua, я согласен, что существующее решение хоть и покрывает нужды большинства пользователей, но не является универсальным. Мне пришлось под свои задачи немного подправить код, что усложняет обновление движка.

Однако, если что-то и менять в коде выбора папок, то проще и правильнее, на мой взгляд, добавить всего один хук в getUploadDestinationDirectory(), который бы позволял вебмастеру вернуть папку по любой желаемой логике. Например так:
  1. public function getUploadDestinationDirectory(){
  2. // Вызов хука
  3. $dest_dir = cmsEventsManager::hook('get_upload_directory');
  4. // Если папка не вернулась, формируем путь стандартным образом
  5. if (!$dest_dir) {
  6. $dest_dir = files_get_upload_dir($this->user_id);
  7. }
  8. return $dest_dir;
  9. }
Это и универсально, и при обновлении ничего не слетит, и в Админке ничего менять не надо, и изменения кода минимальны.
#6 8 февраля 2020 в 23:19
Тоже не раз задумывался над такой структуры папок. По моему мнению проще создавать имя папок такую же как айди пользователя в ней папки с такимже именем как пресеты картинок. Имя картинок гирерировать как сейчас или дату брать. Папок может меньше не станет но структура будет лучше.
#7 8 февраля 2020 в 23:29
@andriu3240, вариантов создания структуры папок много, все предусмотреть и заложить в движок невозможно. Поэтому хотелось бы иметь какое-то универсальное решение, позволяющее разработчику или вебмастеру заменить дефолтный принцип создания папок на желаемый.

Кому-то это не важно, а у кого-то есть точное техническое задание от заказчика со строгими путями или ему нужно перенести существующий сайт на Двойку с сохранением всех путей, в том числе и картинок. Пока это невозможно без ручной правки файлов ядра. А менять ядро сами разработчики движка не рекомендуют, так как потом возникают проблемы с обновлениями. Да и сторонние разработчики неохотно берутся за задачи, где нужно изменять ядро. Тупичок…
#8 9 февраля 2020 в 02:38


Эндрю Ua, я согласен, что существующее решение хоть и покрывает нужды большинства пользователей, но не является универсальным. Мне пришлось под свои задачи немного подправить код, что усложняет обновление движка.

Однако, если что-то и менять в коде выбора папок, то проще и правильнее, на мой взгляд, добавить всего один хук в getUploadDestinationDirectory(), который бы позволял вебмастеру вернуть папку по любой желаемой логике. Например так:

  1. public function getUploadDestinationDirectory(){
  2. // Вызов хука
  3. $dest_dir = cmsEventsManager::hook('get_upload_directory');
  4. // Если папка не вернулась, формируем путь стандартным образом
  5. if (!$dest_dir) {
  6. $dest_dir = files_get_upload_dir($this->user_id);
  7. }
  8. return $dest_dir;
  9. }
Это и универсально, и при обновлении ничего не слетит, и в Админке ничего менять не надо, и изменения кода минимальны.

WebMan

Спасибо за предложение. Можно по подробнее о процедуре getUploadDestinationDirectory()? Не подскажите где именно?
#9 9 февраля 2020 в 10:23
getUploadDestinationDirectory()
Только нужно ещё добавить обработку хука 'get_upload_directory' в какой-то из своих компонентов. Если не знаете как это сделать, обратитесь к сторонним разработчикам.

P.S. Предложенный вариант изменяет код ядра! Он решает задачу с нестандартными путями папок для файлов, но изменения в getUploadDestinationDirectory() нужно будет проверять/вносить каждый раз после обновления движка, так как файл uploader.php может быть заменён обновлённым.
Это не правильно. Но другого варианта разработчики Двойки вебмастерам не оставляют.
#10 9 февраля 2020 в 13:47

Да и сторонние разработчики неохотно берутся за задачи, где нужно изменять ядро.

WebMan
Примеры можете привести?
Эндрю Ua, вам стоит разобраться с существующим кодом здесь и здесь.
А так же иметь четкое представление о структуре папок, которую вы хотели бы иметь.
#11 9 февраля 2020 в 13:51
Может можно галочками настроить режимы структуры папок? laugh
#12 10 февраля 2020 в 15:49


Да и сторонние разработчики неохотно берутся за задачи, где нужно изменять ядро.

WebMan
Примеры можете привести?
Эндрю Ua, вам стоит разобраться с существующим кодом здесь и здесь.
А так же иметь четкое представление о структуре папок, которую вы хотели бы иметь.

@IamB

а так же


getUploadDestinationDirectory()
Только нужно ещё добавить обработку хука 'get_upload_directory' в какой-то из своих компонентов. Если не знаете как это сделать, обратитесь к сторонним разработчикам.

P.S. Предложенный вариант изменяет код ядра! Он решает задачу с нестандартными путями папок для файлов, но изменения в getUploadDestinationDirectory() нужно будет проверять/вносить каждый раз после обновления движка, так как файл uploader.php может быть заменён обновлённым.
Это не правильно. Но другого варианта разработчики Двойки вебмастерам не оставляют.

WebMan


Спасибо WebMan и спасибо @IamB за помощь и ответ.
Буду разбираться…
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.