UploadedFile возвращает null, данные о файле при этом есть[РЕШЕНО]

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
terrarium volition
Сообщения: 99
Зарегистрирован: 2021.07.15, 21:22

UploadedFile возвращает null, данные о файле при этом есть[РЕШЕНО]

Сообщение terrarium volition »

Всем доброго дня!

Столкнулся с ситуацией, прошу помощи у сообщества. Непонятно, почему не могу получить файл, интернет не помог, хотя подобные темы всплывают.

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

	if(isset($_FILES['uploaddata'])){
                $FilesData = $_FILES['uploaddata'];
                
                $session->set('FilesData', $FilesData);

                $filename = $FilesData['name'];

                $model = new UploadForm();

                $xmlFile = \yii\web\UploadedFile::getInstanceByName($filename);
                $session->set('filename', $filename);

                $session->set('xmlFileModal', $xmlFile);

                if ($xmlFile) {
                ....
                }
	}

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

\yii\web\UploadedFile::getInstanceByName($filename);
Возвращает null. В "FilesData" информация о файле при этом следующая:

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

[
    'name' => 'file.textcmd.xml'
    'type' => 'text/xml'
    'tmp_name' => 'C:\\xampp\\tmp\\php42E9.tmp'
    'error' => 0
    'size' => 2831781
]
Виджет задаётся без использования $model и 'attribute', следовательно я не могу использовать:

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

$xmlFile = \yii\web\UploadedFile::getInstance($model, 'xmlFile');
,
который прекрасно работает.

Использовать $model и 'attribute' я не могу, т.к FileInput используется в модальном окне и, согласно документации, реализуется это так:

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

<?php Modal::begin([
                'toggleButton' => [
                    'label'=>'Show Modal', 'class'=>'btn btn-default btn-outline-secondary'
                ],
            ]);
            $form1 = ActiveForm::begin([
                'options'=>['enctype'=>'multipart/form-data']
            ]);
                echo FileInput::widget([
                    'name'=>'uploaddata',
                    'options'=>[
                        'multiple'=>false
                    ],
                    'pluginOptions' => [
                        'previewFileType'   =>  'any',
                        'uploadUrl'             =>  "index.php?r=site/uploadmodal",
                    ]
                ]);
            ActiveForm::end();
            Modal::end();
 ?>
Через

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

$form->field($modelUpload, 'xmlFile')->widget(FileInput::classname()....
Виджет не вставляется в модальное окно.

Вопроса, по сути, два:
1. Как сделать, чтобы \yii\web\UploadedFile::getInstanceByName($filename); видел файл?
2. Как запихнуть FileInput c $model и 'attribute' в Modal?
Последний раз редактировалось terrarium volition 2023.04.15, 14:00, всего редактировалось 1 раз.
Аватара пользователя
SiZE
Сообщения: 2813
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: UploadedFile возвращает null, данные о файле при этом есть

Сообщение SiZE »

В качестве аргумента метод getInstanceByName() принимает "The name of the file input field." - что переводится, как "имя инпута файла". Вы передаете имя файла, а надо имя инпута.

Есть же гайд по загрузке файлов, не надо этих велосипедов с _FILES.

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

$xmlFile = \yii\web\UploadedFile::getInstanceByName('uploaddata');
terrarium volition
Сообщения: 99
Зарегистрирован: 2021.07.15, 21:22

Re: UploadedFile возвращает null, данные о файле при этом есть

Сообщение terrarium volition »

SiZE писал(а): 2023.04.12, 11:12 В качестве аргумента метод getInstanceByName() принимает "The name of the file input field." - что переводится, как "имя инпута файла". Вы передаете имя файла, а надо имя инпута.

Есть же гайд по загрузке файлов, не надо этих велосипедов с _FILES.

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

$xmlFile = \yii\web\UploadedFile::getInstanceByName('uploaddata');
:roll: О, Боги!
Как же я слеп на заморские буквы!
Спасибо тебе, о великий Размер!
Размер имеет значение :lol:
terrarium volition
Сообщения: 99
Зарегистрирован: 2021.07.15, 21:22

Re: UploadedFile возвращает null, данные о файле при этом есть

Сообщение terrarium volition »

Появилась новая проблема - Drag'n'drop в модальном окне не работает, файл можно добавить только по кнопке.
Да что же это за напасть такая?!
terrarium volition
Сообщения: 99
Зарегистрирован: 2021.07.15, 21:22

Re: UploadedFile возвращает null, данные о файле при этом есть

Сообщение terrarium volition »

terrarium volition писал(а): 2023.04.12, 14:53 Появилась новая проблема - Drag'n'drop в модальном окне не работает, файл можно добавить только по кнопке.
Да что же это за напасть такая?!
Вру.
Оказывается, это виртуалка, в которой я сижу, затупила. Она и на рабочем столе что-либо перетаскивать перестала. :shock:
Перезагрузка помогла.
Ответить