Я использую виджете
demos.krajee.com/widget-details/fileinput. И у я проблема в том, что при загрузке файлов нужно чтобы ajax сразу загружался на сервер. Как допустим вконтакте, gmail и в других местах до отправки файлов и потом быстро отправляет. Чтобы при сохранение файла, долго не пришлось ждать. Сейчас input type=file когда грузится допустим 20 Мб, то страница долга грузится и может вовсе выйти что превышено время ожидания, и приходится назад и заново все данные вводить. Мне нужно, чтобы, когда пользователь грузит допустим при плохом интернете и был при этом процесс бар. Где пользователь видел что сколько загрузилось когда завершилась загрузка и быстро мог просто сохранить данные в базу данных, а файл уже на сервере лежит.
Я остановился на том что страница просто перезагружается когда нажимаешь загрузить и все. Вот код
<?=$form->field($models, 'file')->widget(FileInput::className(), [
'name' => 'input-ru[]',
'options' => ['multiple' => false],
'language' => 'ru',
'pluginOptions' => [
'uploadeUrl' => Url::to(['zakaz/uploade', 'id' => $models->id_zakaz]),
'showPreview' => false,
'previewFileType' => 'any',
]
]) ?>
И да после сохранение у меня вопросы, как получить имя файла который сохранился
В контроллере я написал так
public function actionUploade($id){
$model = $this->filndModel($id);
$model->file = UploadedFile::getInstance($model, 'file');
$model->upload();
$model->img = time().'.'.$model->file->extension;
}
public function actionZakazedit($id){
$models = $this->findModel($id);
if($models->load(Yii::$app->request->post()) && $models->save()){
return $this->redirect(['admin', '#' => $models->id_zakaz]);
} else {
return $this->renderAjax('_zakazedit', ['models' => $models]);
}
}
В моделе
public function upload()
{
if($this->file){
$this->file->saveAs('attachment/'.time().'.'.$this->file->extension);
return true;
} else {return false;}
}