@hollanditkzn

Кто поможет разобраться с виджетом fileInput?

Я использую виджете 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;}
    }
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы