Из коробки на Yii2 (yii\imagine\Image) решала достаточно много функций. Там было всё необходимое. Однако всегда не хватало каких-то мелочей по работе с файлами и изображениями. А так как люди на Yii2 не привыкли всё разносить по сервисам, то получался адский код по работе с изображениями в Контроллере. Было бы не плохо более гибче подойти в этом вопросе.
1. Если изображение нужно загрузить в нескольких форматах (превью, 200x200 ...), то приходилось как-то придумывать по динамическому созданию пути (имени файла) и так же его выводу... Это создавало бардак у многих.
2. Невозможно перегенерировать изображения. Иногда сталкиваемся с такой проблемой, что приходится менять размены изображения. Например, поменялась верстка. И теперь на нужно вместо изображения 200х200 изображение 300х300. Или нужно новое 500Х500. И нам приходится писать ещё один костыль по переформатированию изображения или созданию нового. При этом хорошо, если оригинал мы сохранили. А большинство обрезают оригинал... Или же при обращении этого размера не оказалось, тогда генерируется новое из оригинала при запросе.
В этом пункте было бы не плохо иметь базовую заглушку при отсутствии даже оригинала.
3. Структура подкаталогов: 1/2/3/4/5/0/0/0/0/0
4. Замена, удаление файла при изменении, удалении данных из базы.
Одно из хороших расширений решающих эти проблемы на Yii2 было https://github.com/yii-dream-team/yii2-upload-behavior Где в поведении можно было просто реализовать несколько копий в папке. Перегенерировать превью и так далее
Код: Выделить всё
public function behaviors()
{
return [
[
'class' => '\yiidreamteam\upload\ImageUploadBehavior',
'attribute' => 'imageUpload',
'thumbs' => [
'thumb' => ['width' => 400, 'height' => 300],
],
'filePath' => '@webroot/images/[[pk]].[[extension]]',
'fileUrl' => '/images/[[pk]].[[extension]]',
'thumbPath' => '@webroot/images/[[profile]]_[[pk]].[[extension]]',
'thumbUrl' => '/images/[[profile]]_[[pk]].[[extension]]',
],
];
}
5. Касается работы именно с файлами. Не хватало всегда отдачи массовой отдачи файлов пользователю в архиве.
Если у кого-то тоже есть какие-то пожелания из опыта предлагаю писать их здесь)