Comments 15
А можно было использовать какой-либо из расширений, которые уже давно написаны github.com/yiiext. Есть замечания по коду, но думаю глупо их высказывать тут.
+2
>>Во фреймворке нет специально выделенной папки для загрузки файлов
А разве это там должно быть? Помимо сервера где был запущен скрипт могут быть различные кластеры, CDN-ны и прочее куда нужно загружать файлы.
>>Загрузку файлов приходится каждый раз описывать в контроллере
Это вы так считаете. Это можно спокойно делать и вне контроллера. Вообще если использовать для этого всего Form Builder выходит очень даже удобно. Только про него все забыли как-то…
3-иый пункт недостатков вообще не понял…
4) опять же это вам решать. ибо мест хранения файлов может быть масса. Не считаю это недостатком. На проектах где файлы хранятся локально я просто храню в базе URI файла и отдаю через отдельный сервис.
Ваш метод является обычным велосипедом, который подходит только в некоторых случаях. Это мое мнение.
А разве это там должно быть? Помимо сервера где был запущен скрипт могут быть различные кластеры, CDN-ны и прочее куда нужно загружать файлы.
>>Загрузку файлов приходится каждый раз описывать в контроллере
Это вы так считаете. Это можно спокойно делать и вне контроллера. Вообще если использовать для этого всего Form Builder выходит очень даже удобно. Только про него все забыли как-то…
3-иый пункт недостатков вообще не понял…
4) опять же это вам решать. ибо мест хранения файлов может быть масса. Не считаю это недостатком. На проектах где файлы хранятся локально я просто храню в базе URI файла и отдаю через отдельный сервис.
Ваш метод является обычным велосипедом, который подходит только в некоторых случаях. Это мое мнение.
+4
Спасибо за комментарий. Согласен с тем, что метод подходит только в некоторых случаях. Несколько раз упомянул об этом в статье. Если точнее, в моем случае проекты небольшие, нагрузки невысокие. Требовался максимально удобный инструмент, на мой взгляд он получился. С учетом DActiveForm (см. «Последние штрихи»), в модели нужно всего лишь указать валидатор. Ну, и связи определить.
Теперь по пунктам:
1. Согласен, но для небольших проектов можно и так.
2. Такой способ предложен в официальном рецепте. Разумеется, загрузку можно делать вне контроллера. Про Form Builder почитаю внимательнее (мне пока достаточно DActiveForm с описанием нужных инпутов).
3. Изначально я опирался на официальный рецепт yiiframework.ru/doc/cookbook/ru/form.file.upload. Там действительно не описан actionUpdate(). Позже, в рецепте yiiframework.ru/doc/cookbook/ru/form.file.upload.fat.model об этом было написано отдельно (см. 3-й абзац рецепта).
4. Нет рекомендаций == вам решать. Вот и предложил свое решение.
Что касается велосипеда, я действительно вначале попробовал найти что-нибудь подходящее. Посмотрите ссылки в начале статьи. Посмотрел и github.com/yiiext. Ничего похожего не нашел. Если посоветуете конкретное расширение, буду благодарен.
Теперь по пунктам:
1. Согласен, но для небольших проектов можно и так.
2. Такой способ предложен в официальном рецепте. Разумеется, загрузку можно делать вне контроллера. Про Form Builder почитаю внимательнее (мне пока достаточно DActiveForm с описанием нужных инпутов).
3. Изначально я опирался на официальный рецепт yiiframework.ru/doc/cookbook/ru/form.file.upload. Там действительно не описан actionUpdate(). Позже, в рецепте yiiframework.ru/doc/cookbook/ru/form.file.upload.fat.model об этом было написано отдельно (см. 3-й абзац рецепта).
4. Нет рекомендаций == вам решать. Вот и предложил свое решение.
Что касается велосипеда, я действительно вначале попробовал найти что-нибудь подходящее. Посмотрите ссылки в начале статьи. Посмотрел и github.com/yiiext. Ничего похожего не нашел. Если посоветуете конкретное расширение, буду благодарен.
-2
У меня в проекте на каждый раздел может быть разная логика. Лучше оформить все в виджет которому передавать можно путь или шаблон пути, а он возвращал бы в форму… или мультиаплоад в папку уникальную для отдельной новости/статьи/страницы. Или можно сделать как в Битриксе (общие файлы + медиа библиотека)
0
Аплоад пользовательских файлов в protected — плохо. Почему нельзя создать каталог uploads?
+1
загрузка файлов в официальном рецепте описана превосходно. зачем что то выдумывать?
а для создания превью есть множество расширений на любой вкус
а для создания превью есть множество расширений на любой вкус
+1
Зачем каждый раз при отдаче статического файла поднимать php-процесс, коннектиться к базе, выбирать запись по ключу и плеваться файлом через readfile? Разве не проще ли заранее сохранить файл в «нормальный» каталог и передать задачу выдачи файла тому, кто с этим справляется лучше — веб-серверу? К вам на сайт больше 100 человек в день давно заходили?
+2
я бы даже просто симлинк по требованию создавал бы временный, если уж так хочется ограничить пользователя в загрузке файлов.
0
симлинк по требованию создавал бы временный, если уж так хочется ограничить пользователя в загрузке файлов
Ещё один способ, который может быть интересен читающим комментарии: www.opennet.ru/base/net/nginx_x_accel_redirect.txt.html
0
у меня такой вопрос, как лучше реализовать, имеются в планах несколько разных модулей, каждый из них будет иметь возможность загрузки фотографий. Как лучше сделать, создать отдельную таблицу в БД под хранения фотографий для всех модулей, или же создавать отдельную таблицу в БД под каждый модуль отдельно?
0
Sign up to leave a comment.
Загрузка файлов в Yii