eajaxupload для Yii всегда терпел неудачу

В настоящее время мы пытаемся использовать расширение eajaxupload для Yii, но, похоже, каждый раз, когда мы пытаемся загрузить файл, выводится ошибка.

мы пробовали

а) редактирование файла/минимальные размеры файлов

б) поэкспериментировать с путем к файлу (все еще может быть неправильным, если кто-нибудь знает, каким будет путь для локального использования в xampp, сообщите нам. Наша папка для загрузки находится в корне проекта.)

c) изменение файла htiaccess php

г) разрешения

мы просто не знаем, выглядит ли сам код неправильно.

контроллер

/* UPLOADER */
    public function actionUpload(){
        Yii::import("ext.EAjaxUpload.qqFileUploader");
//        $folder = '/uploads/';
//        $folder=Yii::getPathOfAlias() .'/upload/';
        $folder=Yii::app()->baseUrl . '/uploads/';
        $allowedExtensions = array("jpg","png");//array("jpg","jpeg","gif","exe","mov" and etc...
        $sizeLimit = 10 * 1024 * 1024;// maximum file size in bytes
        $uploader = new qqFileUploader($allowedExtensions, $sizeLimit);
        $result = $uploader->handleUpload($folder);
//        $return = htmlspecialchars(json_encode($result), ENT_NOQUOTES);
// 
//        $fileSize=filesize($folder.$result['filename']);//GETTING FILE SIZE
//        $fileName=$result['filename'];//GETTING FILE NAME
// 
//        echo $return;// it's array

        $result = $uploader->handleUpload($folder);

        $fileSize=filesize($folder.$result['filename']);//GETTING FILE SIZE
        $fileName=$result['filename'];//GETTING FILE NAME
        $result=htmlspecialchars(json_encode($result), ENT_NOQUOTES);

        echo $result;// it's array
    }

Вид

*$this->widget('ext.EAjaxUpload.EAjaxUpload',
                array(
                    'id'=>'uploadFile',
                    'config'=>array(
                        'action'=>'/upload/',
//                        'action'=>Yii::app()->createUrl('controllers/uploads/'),
                        'allowedExtensions'=>array("jpg","png"),//array("jpg","jpeg","gif","exe","mov" and etc...
                        'sizeLimit'=>10*1024*1024,// maximum file size in bytes
                        //'minSizeLimit'=>10*1024*1024,// minimum file size in bytes
                        'onComplete'=>"js:function(id, fileName, responseJSON){ alert(fileName); }",
                        'messages'=>array(
                            'typeError'=>"{file} has invalid extension. Only {extensions} are allowed.",
                            'sizeError'=>"{file} is too large, maximum file size is {sizeLimit}.",
                            'minSizeError'=>"{file} is too small, minimum file size is {minSizeLimit}.",
                            'emptyError'=>"{file} is empty, please select files again without it.",
                            'onLeave'=>"The files are being uploaded, if you leave now the upload will be cancelled."
                        ),
                        'showMessage'=>"js:function(message){ alert(message); }"

                    )*

person Alex    schedule 29.05.2015    source источник


Ответы (3)


У меня давно такая же проблема. Вы должны убедиться, что:

  • вы получаете локальный путь, а не URL-адрес (Yii::getPathOfAlias('webroot')).
  • $sizeLimit должен быть меньше, чем параметры php «post_max_size» и «upload_max_size». Вы можете проверить их значения с помощью ini_get(variable) и преобразовать их в байты.
  • Также заметил, что вы пытаетесь загрузить файл дважды.
  • Если ни один из них не работает, отправьте сообщение об ошибке, которое вы получаете.
person Josep Alsina    schedule 31.05.2015
comment
То же самое: $folder=Yii::getPathOfAlias() .'/upload/'; тогда 'action'=›'/upload/', это правильный способ форматирования? Все равно не повезло! Сначала мы получали ошибку 403, а затем перешли на 400. - person Alex; 01.06.2015
comment
Вы пробовали Yii::getPathOfAlias('webroot')? Можете ли вы напечатать полный путь, который вы получаете? - person Josep Alsina; 01.06.2015
comment
Да, я уверен, что webroot был первым, что мы попробовали при использовании getpathofalias. Текущий путь, который, кажется, выводится: /application/uploads/images/ - person Alex; 01.06.2015

Мне кажется, что ваш поступок неправильный в

'config'=>array(
   'action'=>'/upload/',

Если вы загружаете на public function actionUpload()

тогда ваше действие должно быть «загрузить/загрузить», потому что ConrollerName/ActionName должно соответствовать «действию» в вашем виджете

'config'=>array(
       'action'=> Yii::app()->baseUrl . '/upload/upload',

or

'config'=>array(
   'action'=>$this->createUrl('upload/upload')

Взгляните и на это: http://www.yiiframework.com/doc/guide/1.1/en/topics.url

Удачи

person Babak Bandpay    schedule 01.06.2015

Чтобы обновить это, он не будет работать на локальном сервере Xampp на MAC.

Это работало на нашем живом сервере разработки, но не на живом сервере. Кажется, расширение зависит от сервера. Не хватает документации, и я полагаю, что есть исправление, но оно отвечает на множество вопросов о том, что код в порядке, но не работает.

person Alex    schedule 09.06.2015
comment
У меня также возникла проблема на живом сервере, вызов ajax после выбора изображения не достигает URL-адреса действия. :(. @Alex, расскажи, пожалуйста, как ты это решил? - person Mahen; 29.07.2017
comment
мы не решили, что вызвало проблему, к сожалению. Мы загрузили на наш живой сервер, где это сработало, и нам повезло, что это сработало! если вы можете разместиться в другом месте, вам может повезти. - person Alex; 04.08.2017