Страница 1 из 4

yii2-fileapi from vova07

Добавлено: 2015.01.16, 13:24
phpstarter
Скачал данный виджет, поставил, надо будет покопаться еще в настройках, пока не все разобрал...
Вопрос в следующем, как я понял в виджете есть опция сделать crop автоматом.
Однако можно ли после того как выбран image для закачки, какнибудь втиснуть туда код какогонить окошка в котором можно былобы показать превью картинки и сделать кроп с помощью какогонить стороннего скрипта ? Тоесть я хочу предоставить юзеру самому выбрать ту область картинки которая пойдет под кроп.

Re: yii2-fileapi from vova07

Добавлено: 2015.01.16, 13:42
vismut
По проблеме не подскажу, но советую в целом про файлапи прочитать, попытаться разобраться, чтоб понять как он работает.
Это довольно сложная штука, и скорее всего виджет имеет жеские рамки гибкости

Re: yii2-fileapi from vova07

Добавлено: 2015.01.16, 13:46
TranceSmile
я ставил по инструкции с гит. То он так работает как Вам нужно.

Re: yii2-fileapi from vova07

Добавлено: 2015.01.18, 22:48
vova07
Исправил демо сайт. Можете посмотреть как работает кроп на странице авторизации: http://yii2-start.find-freelancer.pro/signup/ все вроде именно так как вам нужно.

Re: yii2-fileapi from vova07

Добавлено: 2015.01.19, 16:23
phpstarter
О! То что доктор прописал! :) А можно пример кода как такогоже добиться ? на джит хабе вроде не нашел.

Re: yii2-fileapi from vova07

Добавлено: 2015.01.19, 17:12
vova07
Реальный код что есть в демо примере, можете посмотреть тут: https://github.com/vova07/yii2-start-us ... up.php#L47
По сути там 3 строки нужно указать.

Re: yii2-fileapi from vova07

Добавлено: 2015.01.19, 17:56
phpstarter
Большое спасибо, Crop заработал как положено!
А можно подсказку как добиться того чтобы закачивалось сразу несколько файлов?
Файл оригинал, кропнутый файл, и скажем еще авто кроп кропнутого файла с заранее указанными размерами ?

Тоесть закачиваем полюбому файл оригинал котрый был допустим 1000x1000.
Кроп юзеру мы задали 100x100.
Но после того как он его сделает и создаться файл 100x100, с него еще берем отдельно 50x50 картинку.

И еще вопрос. Закачавшись на страничке появляется иконка рисунка, и если провести поверх мышкой то выходит функция удаления рисунка, нажав кнопку рисунок удаляется со странички, однако на диске он так и остается, не удалившись. По идее он ведь должен стираться или я чтото неправильно понял ?

Re: yii2-fileapi from vova07

Добавлено: 2015.01.20, 01:00
vova07
Для такого поведения, вам нужно будет дописать самостоятельно логику нарезки. Понадобится добавить обработчик для создания автоматической картинки с размером 50Х50. И включить отправку оригинальной картинки: https://github.com/RubaXa/jquery.fileap ... nalboolean
Но в таком случае, вам нужно будет адаптировать поведение загрузки картинки самостоятельно, так как на сервер вместо одной картинки, будет отправлен массив с картинками, и каждую нужно будет сохранить.

Касательно изображения: как я понял речь идет об удалении картинки до её сохранения. Возможно это нужно доработать, но логика подразумевала, что временная папка будет очищаться по крону, и дополнительных заморочек с этим не предполагалось.

Re: yii2-fileapi from vova07

Добавлено: 2015.01.21, 11:46
phpstarter
Попробовал отправку оригинальной картинки но кажется чтото делаю неправильно.

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

FileAPI::className(),
        [
            'settings' => [
                'url' => ['/users/fileapi-upload']
            ],
            'crop' => true,
            'cropResizeWidth' => 100,
            'cropResizeHeight' => 100,
            'imageOriginal' => TRUE
        ] 
Ругается на

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

Setting unknown property: vova07\fileapi\Widget::imageOriginal

Re: yii2-fileapi from vova07

Добавлено: 2015.01.21, 15:18
vova07
Это нужно в "settings" массиве прописать, так как это свойство именно плагина, а не виджета.

Re: yii2-fileapi from vova07

Добавлено: 2015.01.22, 12:54
phpstarter
Добавил в view

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

echo $form->field($model, 'preview_url')->widget(
        FileAPI::className(),
        [
            'settings' => [
                'url' => ['/users/fileapi-upload'],
                'imageOriginal' => true
            ],
            'crop' => true,
            'cropResizeWidth' => 100,
            'cropResizeHeight' => 100,

        ]
    );
В модели прописано

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

 public function behaviors()
    {
        return [
            'uploadBehavior' => [
                'class' => UploadBehavior::className(),
                'attributes' => [
                    'preview_url' => [
                        'path' => 'D:\Work\XAMPP\htdocs\a1.com\web\files\test2',
                        'tempPath' => 'D:\Work\XAMPP\htdocs\a1.com\web\files\test1',
                        'url' => '/a1.com/web/files'
                    ],
                    'image_url' => [
                        'path' => 'D:\Work\XAMPP\htdocs\a1.com\web\files\test4',
                        'tempPath' => 'D:\Work\XAMPP\htdocs\a1.com\web\files\test3',
                        'url' => '/a1.com/web/files'
                    ]
                ]
            ]
        ];
    }
В контроллере

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

    public function actions()
    {
        return [
            'fileapi-upload' => [
                'class' => FileAPIUpload::className(),
                'path' => 'D:\Work\XAMPP\htdocs\a1.com\web\files\test1'
            ]
        ];
    }
Как результат , в момент заполнения формы превьюшка подкачивается в test1.
затем если отправить форму test1 очищается, а ее содержимое переходит в test2.

Однако оригинальная картинка, так и не сохраняется нигде.

Re: yii2-fileapi from vova07

Добавлено: 2015.01.22, 13:37
vova07
Я по этому поводу писал выше, и предупреждал:
в таком случае, вам нужно будет адаптировать поведение загрузки картинки самостоятельно, так как на сервер вместо одной картинки, будет отправлен массив с картинками, и каждую нужно будет сохранить.
моё стандартное поведение из виджета, не адаптировано для этой задачи, по этому вам нужно заменить её на свою. Тоже самое и касательно стандартного экшена.

Re: yii2-fileapi from vova07

Добавлено: 2015.01.22, 13:48
phpstarter
Тоесть опция

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

'imageOriginal' => true
ничего не дает ? Под нее надо будет писать свой код, так ?

Re: yii2-fileapi from vova07

Добавлено: 2015.01.22, 18:15
vova07
По сути да.
Она просто указывает плагину, чтоб он на сервер отправлял не только кроп что выбрал пользователь, но и сам оригинал. А вот уже дальнейшие действия, вы сами должны написать, и решить.

Re: yii2-fileapi from vova07

Добавлено: 2015.01.23, 07:16
phpstarter
Ок спасибо, а можно узнать в каком месте происходит обработка той превьюшки? тоесть сам код закачки превьюшки, чтоб я на его примере прилепил туда все то остальное что мне нужно.

Re: yii2-fileapi from vova07

Добавлено: 2015.01.23, 12:36
vova07
Кроп и обработка начинается вот здесь: https://github.com/vova07/yii2-fileapi- ... t.php#L391

Re: yii2-fileapi from vova07

Добавлено: 2015.01.23, 12:55
phpstarter
спасибо, буду разбираться.

Re: yii2-fileapi from vova07

Добавлено: 2015.01.23, 13:51
phpstarter
Еще вопросик.

Вот например в виджете нашел место

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

if ($this->crop === true) {
            $this->settings['autoUpload'] = false;
        } 
Если перекинуть в true то закачивается целая картинка без кропа.
Вопрос в другом. Побегал по файлам и нигде не нашел места где проверяется значение этого самого autoUpload.
Можете ткнуть пальцем ? :)

Re: yii2-fileapi from vova07

Добавлено: 2015.01.23, 18:12
vova07
Данный параметр относится к Javascript плагину. Хочу напомнить что мой виджет это обертка над этим плагином: https://github.com/RubaXa/jquery.fileapi по этому все что в коде, это чисто обработка настроек виджета, и передача их в правильном виде в сам плагин. Дальше уже все, делается на основе плагина JS.
Советую кстати ознакомится с документацией этого инструмента, там и найдете место где идет проверка на "autoUpload"

Re: yii2-fileapi from vova07

Добавлено: 2015.01.23, 19:27
phpstarter
тоесть основные файлы значит лежат в папке vendor/rubaxa/fileapi? я правильно понял ?