загрузка и сортировка файлов в папке Upload
В этой папке очень много подпапок и подпапок, они для меня нумеруются (сортируются) непонятным образом, не могу понять в какую папку что загружается и откуда…
Можно как то разьяснить суть работы ?
Как все это работает и почему такие названия и что за что отвечает и тому подобное ??
Есть хостинги с ограничением на количество файлов, на самых низких тарифах, на пример, 1000 000 файлов. Если даже сжимать изображения, то в некоторых случаях может быстрее закончится количество файлов чем место на диске.
Дискуссия там конечно не слабая, но ушла тема в лес и все вернулось к началу
Эндрю Ua, может быть вам поможет эта тема.
Я понял, что это боль многих… не только моя.
Просто очень сложно понимать и искать файл, так как из админки удалять и искать изображения или загруженные файлы тоже нет возможности. Это не удобно, когда тебе нужно зачистить определенные файлы после правки на сайте разделов. Или удаления темы и т.п.
В общем решения как такового я не понял, идеи и примеры были с объяснением но вот выхода из рутины не нашел.
Но спасибо за разъяснение всем тем, кто ввел подобное обсуждение в той теме и на многое раскрыл глаза, но логики в таком решении я не нашел😊Особенно 16 -тиричной системе и рандомном названии папки. Это полный трешь .
Вот хотябы по датам сортировка папок, очень бы облегчила ситуацию но а лучше конечно отдельно папку пользователя и папки для изображений групп, альбомов, статей… что бы как то сортировать лояльно...
И если речь о переполнении файлов в папке, то почему ни сделать сортировку по датам ??? А не произвольно… Не пойму.
Однако, если что-то и менять в коде выбора папок, то проще и правильнее, на мой взгляд, добавить всего один хук в getUploadDestinationDirectory(), который бы позволял вебмастеру вернуть папку по любой желаемой логике. Например так:
public function getUploadDestinationDirectory(){ // Вызов хука $dest_dir = cmsEventsManager::hook('get_upload_directory'); // Если папка не вернулась, формируем путь стандартным образом if (!$dest_dir) { $dest_dir = files_get_upload_dir($this->user_id); } return $dest_dir; }
Кому-то это не важно, а у кого-то есть точное техническое задание от заказчика со строгими путями или ему нужно перенести существующий сайт на Двойку с сохранением всех путей, в том числе и картинок. Пока это невозможно без ручной правки файлов ядра. А менять ядро сами разработчики движка не рекомендуют, так как потом возникают проблемы с обновлениями. Да и сторонние разработчики неохотно берутся за задачи, где нужно изменять ядро. Тупичок…
Эндрю Ua, я согласен, что существующее решение хоть и покрывает нужды большинства пользователей, но не является универсальным. Мне пришлось под свои задачи немного подправить код, что усложняет обновление движка.
Однако, если что-то и менять в коде выбора папок, то проще и правильнее, на мой взгляд, добавить всего один хук в getUploadDestinationDirectory(), который бы позволял вебмастеру вернуть папку по любой желаемой логике. Например так:
Это и универсально, и при обновлении ничего не слетит, и в Админке ничего менять не надо, и изменения кода минимальны.
public function getUploadDestinationDirectory(){ // Вызов хука $dest_dir = cmsEventsManager::hook('get_upload_directory'); // Если папка не вернулась, формируем путь стандартным образом if (!$dest_dir) { $dest_dir = files_get_upload_dir($this->user_id); } return $dest_dir; }
Спасибо за предложение. Можно по подробнее о процедуре getUploadDestinationDirectory()? Не подскажите где именно?
Только нужно ещё добавить обработку хука 'get_upload_directory' в какой-то из своих компонентов. Если не знаете как это сделать, обратитесь к сторонним разработчикам.
P.S. Предложенный вариант изменяет код ядра! Он решает задачу с нестандартными путями папок для файлов, но изменения в getUploadDestinationDirectory() нужно будет проверять/вносить каждый раз после обновления движка, так как файл uploader.php может быть заменён обновлённым.
Это не правильно. Но другого варианта разработчики Двойки вебмастерам не оставляют.
Примеры можете привести?Да и сторонние разработчики неохотно берутся за задачи, где нужно изменять ядро.
Эндрю Ua, вам стоит разобраться с существующим кодом здесь и здесь.
А так же иметь четкое представление о структуре папок, которую вы хотели бы иметь.
а так же
getUploadDestinationDirectory()
Только нужно ещё добавить обработку хука 'get_upload_directory' в какой-то из своих компонентов. Если не знаете как это сделать, обратитесь к сторонним разработчикам.
P.S. Предложенный вариант изменяет код ядра! Он решает задачу с нестандартными путями папок для файлов, но изменения в getUploadDestinationDirectory() нужно будет проверять/вносить каждый раз после обновления движка, так как файл uploader.php может быть заменён обновлённым.
Это не правильно. Но другого варианта разработчики Двойки вебмастерам не оставляют.
Спасибо WebMan и спасибо @IamB за помощь и ответ.
Буду разбираться…