2015-05-29 28 views
0

我們目前正在嘗試爲Yii使用擴展eajaxupload,但每次我們嘗試上傳文件時似乎都輸出失敗。對於Yii,eajaxupload總是「失敗」

我們試圖

一)編輯文件/最小文件大小

b)與文件路徑玩耍(仍可能是不正確的,如果有人知道什麼地方使用XAMPP的路徑將是,讓我們知道,我們的上傳文件夾是在項目的根。)

c)改變的htiaccess PHP文件

d)權限

我們只是不知道代碼本身是否出現錯誤。

控制器

/* 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); }" 

        )* 

回答

0

我得到了同樣的問題很久以前。 你必須確保:

  • 你的本地路徑,而不是URL(Yii的:: getPathOfAlias( '根目錄'))。
  • $ sizeLimit必須小於php選項'post_max_size'和'upload_max_size'。您可以使用ini_get(變量)檢查它們的值並將其轉換爲字節。
  • 還注意到您正在嘗試上傳文件兩次。
  • 如果它們都不工作發佈您正在獲取的錯誤消息。
+0

所以會:$ folder = Yii :: getPathOfAlias()。'/上傳/'; 然後'action'=>'/ upload /',是格式化的正確方法嗎?仍然沒有運氣!我們最初得到一個403錯誤,然後移動到400. – DevAL

+0

你試過Yii :: getPathOfAlias('webroot')? 你能打印你得到的完整路徑嗎? –

+0

是的,我確定webroot是我們在使用getpathofalias時嘗試的第一件事。似乎正在輸出的當前路徑是/ application/uploads/images/ – DevAL

0

在我看來,你的行爲是錯誤的

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

如果你上傳到public function actionUpload()

那麼你的行動必須是「上傳/上傳」因爲ConrollerName/ActionName必須在插件的 '動作' 匹配

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

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

看看這太:http://www.yiiframework.com/doc/guide/1.1/en/topics.url

好運

0

要更新這個,也不會在本地服務器上的XAMPP MAC工作。

它在我們的實時開發服務器上工作,但不是在線服務器。似乎擴展名是服務器相關的。缺乏文檔,我想有一個解決方案,但它回答了很多問題,代碼如何很好但不工作。

+0

我在活動服務器中也有問題,選擇圖像後ajax調用沒有達到動作url。 :(。@亞瑟你願意與我分享,你是如何解決它的? – Mahen

+0

我們沒有解決是什麼引起了這個問題,不幸的是,我們上傳到我們的現場服務器,它的工作和幸運,它做到了!如果有可能,在其他地方舉辦你可能會更幸運。 – DevAL