Upload file

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
faeton
Сообщения: 88
Зарегистрирован: 2011.06.06, 01:00

Upload file

Сообщение faeton »

Подскажите, как правильно аплоадить файл, используя ajax. Action такой
В данном случае var_dump выдает пустые массивы.

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

    public function actionUpload()
    {
        $model = new Picture();

        var_dump($_FILES);var_dump($_POST);//die();
        if (Yii::$app->request->isPost)
        {
            $model->file = UploadedFile::getInstance($model, 'file');
            if ($model->file) $model->upload();
            
            if ($model->save())
            {
                echo json_encode(['success'=>true]);
                return;
            }
            $err='';
            $errs=$model->errors;
            //var_dump($errs); die();
            foreach ($errs as $n=>$v)
                $err.="$n:$v[0]; ";
            echo json_encode(['success'=>false, 'error'=>$err]);
//            print_r($model->errors);
            die();
                //return $this->redirect(['view', 'id' => $model->id]);
        }
        return $this->render('create', [
            'model' => $model,
        ]);
    }
Отправляющий JS

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

jQuery(function(){
    jQuery('#snd').click(function(){
        var file=$('#file');
        console.log($('#file').prop("files")[0]);

var file_data = $('#file').prop('files')[0];   
var form_data = new FormData();                  
form_data.append('Picture[file]', '');
form_data.append('Picture[file]', file_data);
alert(form_data);                             
$.ajax({
            url: '/medialib/picture/upload', // point to server-side PHP script 
            dataType: 'text',  // what to expect back from the PHP script, if anything
            cache: false,
            contentType: 'multipart/form-data',
            processData: false,
            data: form_data,                         
            type: 'POST',
            success: function(php_script_response){
                alert(php_script_response); // display response from the PHP script, if any
            }
 });
 
    });
});
Если отправлять тот же скрипт отправляет на чистый php все массивы заполнены.
В данном контроллере для отладки $enableCsrfValidation = false;
Изображение
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Upload file

Сообщение vitalik1183 »

Какой то ****** страшный!
Чем не устраивают нормальные готовые решения?
Yii2!
faeton
Сообщения: 88
Зарегистрирован: 2011.06.06, 01:00

Re: Upload file

Сообщение faeton »

я не нашел виджета с требуемым функционалом. а то что здесь - лишь часть отвечающая за загрузку
Изображение
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Upload file

Сообщение vitalik1183 »

Введите в гугле "yii2 upload ajax"
куча линков на гитхабе. И уберите эту хуйню из кода. Полный бред.
Yii2!
faeton
Сообщения: 88
Зарегистрирован: 2011.06.06, 01:00

Re: Upload file

Сообщение faeton »

подходящего не нашел.
и че тут не так? (на отладочные var_dump, die, alert не смотреть)
Изображение
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Upload file

Сообщение vitalik1183 »

Вы вообще представляете как происходит аплоад файла на уровне js? Как вы собрались загружать бинарные данные если у вас стоит дата тайп текст блять?
Yii2!
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Upload file

Сообщение yiijeka »

$this->response->format есть, а не echo json_encode. Готовых примеров куча.
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Upload file

Сообщение vitalik1183 »

yiijeka писал(а):$this->response->format есть, а не echo json_encode. Готовых примеров куча.
там без этого мильярд проблем :)
до этого момента еще не дошел человек.
Yii2!
faeton
Сообщения: 88
Зарегистрирован: 2011.06.06, 01:00

Re: Upload file

Сообщение faeton »

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

jQuery(function(){
    jQuery('#snd').click(function(){
        var file=$('#file');

var file_data = $('#file').prop('files')[0];   
var form_data = new FormData();                  
form_data.append('Picture[file]', '');
form_data.append('Picture[file]', file_data);
$.ajax({
            url: '/medialib/picture/upload', // point to server-side PHP script 
            dataType: 'text',  // what to expect back from the PHP script, if anything
            cache: false,
            contentType: false,//'multipart/form-data',
            processData: false,
            data: form_data,                         
            type: 'POST',
            success: function(php_script_response){
                alert(php_script_response); // display response from the PHP script, if any
            }
 });
    });
});
 
вот это работает, на хроме по крайней мере
Изображение
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Upload file

Сообщение yiijeka »

да, но вы отгребете в будущем куча проблем, лучше в этом вопросе положиться на готовый код. Посмотрите их реализацию.
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Upload file

Сообщение vitalik1183 »

Как вы это определили? Не выскочило ошибок в консоле? :) Почитайте про аплоад файлов и не несите хуйни.
Yii2!
faeton
Сообщения: 88
Зарегистрирован: 2011.06.06, 01:00

Re: Upload file

Сообщение faeton »

файл успешно отправился и обработался, посмотрю на другие реализации. эту взял из примеров
Изображение
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Upload file

Сообщение vitalik1183 »

дальше так обрататывайте. потом ловите баги и геморой. чем плохи готовые решения? да, кстати вы же не нашли готовых решений так из каких примеров вы взяли этот бред? где пишут такую хуету? линк в студию сударь!
Yii2!
faeton
Сообщения: 88
Зарегистрирован: 2011.06.06, 01:00

Re: Upload file

Сообщение faeton »

Изображение
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Upload file

Сообщение vitalik1183 »

Yii2!
faeton
Сообщения: 88
Зарегистрирован: 2011.06.06, 01:00

Re: Upload file

Сообщение faeton »

мимолетом читал. jQuery-File-Upload использую в другом месте
Изображение
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Upload file

Сообщение vitalik1183 »

кароче юзайте готовые решения, по запросу что я привел выше - куча готовых расширений. хотите свое - посмотрите на готовые варианты, человек выше вам это уже сказал.
Yii2!
faeton
Сообщения: 88
Зарегистрирован: 2011.06.06, 01:00

Re: Upload file

Сообщение faeton »

спасибо
Изображение
faeton
Сообщения: 88
Зарегистрирован: 2011.06.06, 01:00

Re: Upload file

Сообщение faeton »

в js части я слабо разбираюсь, в серверной вроде все нормально сделано
Изображение
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Upload file

Сообщение vitalik1183 »

я и мой коллега выше так не думают
Yii2!
Ответить