Файловый менеджер для выбора и загрузки файлов

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
rosolovsky
Сообщения: 119
Зарегистрирован: 2014.06.23, 11:44
Откуда: Украина

Файловый менеджер для выбора и загрузки файлов

Сообщение rosolovsky »

Здравствуйте. Реализовал загрузку файлов стандартным методом приведенным в документации, либо одним из дополнений. В принципе устраивает, но иногда надо не загружать изображение а выбрать из уже загруженных на сервер. Такая себе кнопка, на которую можно повесить файловый менеджер где можно выбрать необходимое изображение из уже загруженных на сервер либо там же загрузить другое. Что скажете по этому поводу? Есть наработки или идеи как лучше сделать?
rosolovsky
Сообщения: 119
Зарегистрирован: 2014.06.23, 11:44
Откуда: Украина

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение rosolovsky »

О спасибо, а то я уже успел продублировать сообщения вам в личку :)
rosolovsky
Сообщения: 119
Зарегистрирован: 2014.06.23, 11:44
Откуда: Украина

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение rosolovsky »

Подключил, настроил.
Но что-то не так, что это значит?
pic1.jpg
pic1.jpg (53.57 КБ) 8506 просмотров
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение mihail_dev »

конфиг в студию
и отображение
Изображение
rosolovsky
Сообщения: 119
Зарегистрирован: 2014.06.23, 11:44
Откуда: Украина

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение rosolovsky »

Конфиг:

Код: Выделить всё

'controllerMap' => [
        'elfinder' => [
            'class' => 'mihaildev\elfinder\Controller',
            'access' => ['@', '?'], //глобальный доступ к фаил менеджеру @ - для авторизорованных , ? - для гостей , чтоб открыть всем ['@', '?']
            'disabledCommands' => ['netmount'], //отключение ненужных команд https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#commands
            'roots' => [
                [
                    'baseUrl'=>'@web',
                    'basePath'=>'@webroot',
                    'path' => 'uploads',
                    'name' => 'bramy'
                ],

                [
                    'path'   => 'uploads/bramy',
                    'name'   => ['category' => 'my','message' => 'Some Name'], // Yii::t($category, $message)
                    'access' => ['read' => '*', 'write' => 'UserFilesAccess'] // * - для всех, иначе проверка доступа в даааном примере все могут видет а редактировать могут пользователи только с правами UserFilesAccess
                ]
            ],
            'watermark' => [
                    'source'         => __DIR__.'/logo.png', // Path to Water mark image
                     'marginRight'    => 5,          // Margin right pixel
                     'marginBottom'   => 5,          // Margin bottom pixel
                     'quality'        => 95,         // JPEG image save quality
                     'transparency'   => 70,         // Water mark image transparency ( other than PNG )
                     'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field )
                     'targetMinPixel' => 200         // Target image minimum pixel size
            ]
        ]
    ],
Вид:

Код: Выделить всё

<?php
use mihaildev\elfinder\InputFile;
use mihaildev\elfinder\ElFinder;
use yii\web\JsExpression;
use common\models\Category;
use yii\helpers\Html;
use yii\helpers\ArrayHelper;
use yii\widgets\ActiveForm;
use vova07\imperavi\Widget;
?>

<div class="box box-primary" style="width:500px;">
    <div class="box-header with-border">
        <h3 class="box-title">Додати виріб</h3>
    </div>

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
<?php $items = ArrayHelper::map(Category::find()->all(),'id','name'); ?>
<div class="box-body">
<?= $form->field($model, 'id_category')->dropDownList($items, ['prompt'=>'Виберіть категорію виробів']); ?>
<?= $form->field($model, 'name') ?>
<?= $form->field($model, 'description')->widget(Widget::className(), [
    'settings' => [
        'lang' => 'ua',
        'minHeight' => 200,
        'plugins' => [
            'clips'
        ]
    ]
]); ?>
<?= $form->field($model, 'price') ?>
<?= $form->field($model, 'file')->widget(InputFile::className(), [
    'language'      => 'ru',
    'controller'    => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder
    'path' => 'bramy', // будет открыта папка из настроек контроллера с добавлением указанной под деритории 
    'filter'        => 'image',    // фильтр файлов, можно задать массив фильтров с#wiki-onlyMimes
    'template'      => '<div class="input-group">{input}<span class="input-group-btn">{button}</span></div>',
    'options'       => ['class' => 'form-control'],
    'buttonOptions' => ['class' => 'btn btn-default'],
    'multiple'      => false       // возможность выбора нескольких файлов
]);
?>
    <div class="form-group">
        <?= Html::submitButton('Отправить', ['class' => 'btn btn-primary']) ?>
    </div>
</div>
<?php ActiveForm::end(); ?>
</div>
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение mihail_dev »

вам нужно работать только с одной папкой?
Изображение
rosolovsky
Сообщения: 119
Зарегистрирован: 2014.06.23, 11:44
Откуда: Украина

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение rosolovsky »

Мне нужно работать только с одной папкой но иметь доступ к вложенным папкам, так как картинки фактически будут ложиться в эти вложенные разные папки в зависимости от категории товара. То есть папка uploads а в ней уже подпапки категорий. Должен иметь доступ в папку uploads и к вложенным тоже.
Не знаю еще как реализовать доступ к папке uploads и с бакенда и с фронтенда. То это уже к делу не относится.
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение mihail_dev »

для начала
попробуйте работает ли у вас такие настройки

Код: Выделить всё

            'class' => '\mihaildev\elfinder\PathController',
            'root' => [
                'baseUrl' => '@web/uploads',
                'basePath' => '@webroot/uploads',
                'access' => ['read' => '*', 'write' => '*'],
                'name' => 'Папка',                
            ]
 
Изображение
rosolovsky
Сообщения: 119
Зарегистрирован: 2014.06.23, 11:44
Откуда: Украина

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение rosolovsky »

Не работают у меня такие настройки. Для чистоты експеремента yii2 advanced установлен на OpenServer.
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение mihail_dev »

в логах что за ошибка?
Изображение
rosolovsky
Сообщения: 119
Зарегистрирован: 2014.06.23, 11:44
Откуда: Украина

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение rosolovsky »

2 строчки Лога Апача:

Код: Выделить всё

yii2advanced.loc: 127.0.0.1 [16/Aug/2015:21:39:22 +0300] "GET /backend/web/elfinder/manager?filter=image&callback=products-file&lang=ru&path=bramy HTTP/1.1" 200 2269 "http://yii2advanced.loc/backend/web/admin/add" "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"

yii2advanced.loc: 127.0.0.1 [16/Aug/2015:21:39:22 +0300] "GET /backend/web/elfinder/connect?path=bramy&_csrf=dHc1NTBtLWFZRGFlflVINBAYcFxmHmwKMFphX0MVaBMcWn55ZQ4eOA%3D%3D&mimes%5B%5D=image&cmd=open&target=&init=1&tree=1&_=1439750362278 HTTP/1.1" 500 52 "http://yii2advanced.loc/backend/web/elfinder/manager?filter=image&callback=products-file&lang=ru&path=bramy" "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"
 
По ходу второй запрос с ошибкой 500, где копать не знаю.
rosolovsky
Сообщения: 119
Зарегистрирован: 2014.06.23, 11:44
Откуда: Украина

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение rosolovsky »

А вот с таким конфигом заработало, хотя немного странно лишние квадратные скобки, баг наверное или фича :D

Код: Выделить всё

    'controllerMap' => [
        'elfinder' => [
            'class' => '\mihaildev\elfinder\Controller',
            'roots' => [
                [
                    'baseUrl'=>'@web/uploads',
                    'basePath'=>'@webroot/uploads',
                    'access' => ['read' => '*', 'write' => '*'],
                    'name' => 'uploads'
                ],
            ]
        ]
    ],
Заработало и с таким конфигом

Код: Выделить всё

'controllerMap' => [
        'elfinder' => [
            'class' => '\mihaildev\elfinder\PathController',
            'root' => [
                'baseUrl'=>'@web',
                'basePath'=>'@webroot',
                'access' => ['read' => '*', 'write' => '*'],
                'name' => 'uploads'
            ]
        ]
    ]
 
Чудеса!
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение mihail_dev »

я же давал кофиг под PathController
Изображение
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение mihail_dev »

'name' => 'uploads' это просто название в самом ел у тебя должна открываться корневая директория
Изображение
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение mihail_dev »

я сделал доработку добавив такой параметр как startPath
теперь можно выбирать с какой папки начать отображение

Код: Выделить всё

<?= $form->field($model, 'file')->widget(InputFile::className(), [
    'language'      => 'ru',
    'controller'    => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder
    'path' => 'bramy', // будет открыта папка из настроек контроллера с добавлением указанной под деритории 
    'filter'        => 'image',    // фильтр файлов, можно задать массив фильтров с#wiki-onlyMimes
    'template'      => '<div class="input-group">{input}<span class="input-group-btn">{button}</span></div>',
    'options'       => ['class' => 'form-control'],
    'buttonOptions' => ['class' => 'btn btn-default'],
    'startPath' => '@1/test'

]);
?>
путь startPath формируется из номера диска (@1) и пути (/test) можно номер диска не указывать ('startPath' => 'test') тогда он по умолчанию равен 1
Изображение
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение mihail_dev »

rosolovsky писал(а):лишние квадратные скобки, баг наверное или фича
нет есть 2 контроллера
1) mihaildev\elfinder\Controller - расчитан на работу с несколькими дисками здесь и получились квадратные скобки из за того что там массив дисков

2) mihaildev\elfinder\PathController - расчитан на работу с одним диском
Изображение
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение mihail_dev »

ещё вопрос тебе это нужно в твоём проекте
'watermark' => [
'source' => __DIR__.'/logo.png', // Path to Water mark image
'marginRight' => 5, // Margin right pixel
'marginBottom' => 5, // Margin bottom pixel
'quality' => 95, // JPEG image save quality
'transparency' => 70, // Water mark image transparency ( other than PNG )
'targetType' => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field )
'targetMinPixel' => 200 // Target image minimum pixel size
]

а то смотрю это из стандартного конфига

у тебя __DIR__.'/logo.png' есть?
Изображение
rosolovsky
Сообщения: 119
Зарегистрирован: 2014.06.23, 11:44
Откуда: Украина

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение rosolovsky »

Неа не надо, я уже убрал.
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Файловый менеджер для выбора и загрузки файлов

Сообщение mihail_dev »

и так с помощью 'startPath' => '@1/test' ты можеш указать какую папку по умолчанию открыть далее пользователь волен делать что ему захочется
далее по поводу фронт и бэк тебе просто надо правильно указать в обоих случаях
'baseUrl'=>'@web/uploads',
'basePath'=>'@webroot/uploads',

просто для фронт и бэк значения алиасов @web и @webroot разные но их можно указать и статично

и всё будет верно работать
Изображение
Ответить