YII框架下整合上傳插件EFineUploader

1.下載EFineUploader,解壓到ext目錄下

2.視圖層通過以下代碼調用

<?php $this->widget('ext.EFineUploader.EFineUploader',
array(
      'id'=>'FineUploader',
      'config'=>array(
            'autoUpload'=>true,
            'request'=>array(
               'endpoint'=>$this->createUrl('upload'),
               'params'=>array('YII_CSRF_TOKEN'=>Yii::app()->request->csrfToken)
),
            'retry'=>array('enableAuto'=>true,'preventRetryResponseProperty'=>true),
            'chunking'=>array('enable'=>true,'partSize'=>100),//bytes
            'callbacks'=>array(
                             'onComplete'=>"js:function(id, name, response){ }",
                             'onError'=>"js:function(id, name, errorReason){ }",
                              ),
            'validation'=>array(
                      'allowedExtensions'=>array('jpg','jpeg'),
                      'sizeLimit'=>2 * 1024 * 1024,//maximum file size in bytes
                      'minSizeLimit'=>0,// minimum file size in bytes
                               ),
           )
     ));
 
?>

這裏需要修改的地方包括endpoint參數,改成後臺響應的php url,

注意去掉callbacks數組的註釋

3.控制器裏新加一個ACTION響應

public function actionUpload()
    {
    $tempDir = '/upload/'.date('Ym').'/'.date('d').'/';
            $tempFolder=Yii::getPathOfAlias('webroot').'/upload/'.date('Ym').'/'.date('d').'/';
  if(!is_dir($tempFolder))
  {
           mkdir($tempFolder, 0777, TRUE);
           mkdir($tempFolder.'chunks', 0777, TRUE);
  }
            Yii::import("ext.EFineUploader.qqFileUploader");
 
            $uploader = new qqFileUploader();
            $uploader->allowedExtensions = array('jpg','jpeg','png','gif');
            $uploader->sizeLimit = 2 * 1024 * 1024;//maximum file size in bytes
            $uploader->chunksFolder = $tempFolder.'chunks';
 
            $ext = substr($_FILES['qqfile']['name'], strrpos($_FILES['qqfile']['name'],'.')) ;
            $name = (microtime()*1000000).$ext;
            
            $result = $uploader->handleUpload($tempFolder,$name);
            $result['folder'] = $webFolder;
            $result['filename'] = $tempDir.$name;
 
            $uploadedFile=$tempFolder.$name;
 
            header("Content-Type: text/plain");
            $result=htmlspecialchars(json_encode($result), ENT_NOQUOTES);
            echo $result;
            Yii::app()->end();
    }

我這裏沒有使用官方給出的示例,修改了上傳的目錄

此函數會返回一個JSON數組,在CALLBACKS裏面可以用RESPONSE調用

所以我把callbacks數組裏的oncomplete改成了

'onComplete'=>"js:function(id, name, response){ $('#VendorProducts_product_img').val(response.filename);$('#imgLink').attr('href',response.filename) }",

完成上傳後進行的一系列瀏覽器端操作


NOTE:

PHP notice
Undefined variable: postParams
C:\xampp\htdocs\elibrary\public\protected\extensions\EFineUploader\EFineUploader.php(117)
117         $config['params']=$postParams;
可能會出現notice錯誤 解決方法是註釋掉

EfineUploader.php 117行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章