Pull to refresh

Comments 15

А можно было использовать какой-либо из расширений, которые уже давно написаны github.com/yiiext. Есть замечания по коду, но думаю глупо их высказывать тут.
Сначала попробовал найти что-нибудь подходящее. Посмотрите ссылки в начале статьи. Посмотрел github.com/yiiext. Ничего похожего не нашел. Если посоветуете конкретное расширение, буду благодарен.

Конструктивные замечания к коду охотно выслушаю.
>>Во фреймворке нет специально выделенной папки для загрузки файлов
А разве это там должно быть? Помимо сервера где был запущен скрипт могут быть различные кластеры, CDN-ны и прочее куда нужно загружать файлы.

>>Загрузку файлов приходится каждый раз описывать в контроллере
Это вы так считаете. Это можно спокойно делать и вне контроллера. Вообще если использовать для этого всего Form Builder выходит очень даже удобно. Только про него все забыли как-то…

3-иый пункт недостатков вообще не понял…

4) опять же это вам решать. ибо мест хранения файлов может быть масса. Не считаю это недостатком. На проектах где файлы хранятся локально я просто храню в базе URI файла и отдаю через отдельный сервис.

Ваш метод является обычным велосипедом, который подходит только в некоторых случаях. Это мое мнение.

Спасибо за комментарий. Согласен с тем, что метод подходит только в некоторых случаях. Несколько раз упомянул об этом в статье. Если точнее, в моем случае проекты небольшие, нагрузки невысокие. Требовался максимально удобный инструмент, на мой взгляд он получился. С учетом 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. Ничего похожего не нашел. Если посоветуете конкретное расширение, буду благодарен.
У меня в проекте на каждый раздел может быть разная логика. Лучше оформить все в виджет которому передавать можно путь или шаблон пути, а он возвращал бы в форму… или мультиаплоад в папку уникальную для отдельной новости/статьи/страницы. Или можно сделать как в Битриксе (общие файлы + медиа библиотека)
Аплоад пользовательских файлов в protected — плохо. Почему нельзя создать каталог uploads?
Директорию для загрузки можно выбрать любую. В демо-проекте это делается в настройках модуля. Если нужно проверять права при отдаче файла, приходится загружать в protected.
Зачем каждый раз при отдаче статического файла поднимать php-процесс, коннектиться к базе, выбирать запись по ключу и плеваться файлом через readfile? Разве не проще ли заранее сохранить файл в «нормальный» каталог и передать задачу выдачи файла тому, кто с этим справляется лучше — веб-серверу? К вам на сайт больше 100 человек в день давно заходили?
я бы даже просто симлинк по требованию создавал бы временный, если уж так хочется ограничить пользователя в загрузке файлов.
Как раз его и использую.
симлинк по требованию создавал бы временный, если уж так хочется ограничить пользователя в загрузке файлов

Ещё один способ, который может быть интересен читающим комментарии: www.opennet.ru/base/net/nginx_x_accel_redirect.txt.html
у меня такой вопрос, как лучше реализовать, имеются в планах несколько разных модулей, каждый из них будет иметь возможность загрузки фотографий. Как лучше сделать, создать отдельную таблицу в БД под хранения фотографий для всех модулей, или же создавать отдельную таблицу в БД под каждый модуль отдельно?
Здравствуйте. Я остановился для себя на первом варианте. У всех моих фотографий одинаковые свойства, поэтому не имеет смысла делать несколько одинаковых таблиц или несколько моделей. Если же требуется различная обработка фотографий в разных модулях, можно сделать разные таблицы и разные модели.
Sign up to leave a comment.

Articles