2013-06-19 115 views
0

我正在使用CMultifileUpload進行文件上傳並嘗試設置文件的最大上傳大小。當我搜索並沒有得到任何內置參數來設置上傳前的最大文件大小。yii CMultiFileUpload最大文件大小驗證

這裏我上傳文件代碼,

$filetype="avi|flv|mp4|mpeg|mov|3gp|mkv|vob|divx|mpg|wmv|wlmp"; 
      $this->widget('CMultiFileUpload', array(
       'model'=>$model, 
       'name' => 'videofile', 
       'max'=>1, 
       'accept' => $filetype, 
       'duplicate' => 'Duplicate file!', 
       'denied' => 'Invalid file type', 
       'htmlOptions'=>array('style'=>'opacity: 0; height: 136px; width: 200px;cursor: pointer;'), 
       'options'=>array(
        'onFileSelect'=>'function(e, v, m){ 
         var size=$("#videofile")[0].files[0].size; 
         alert(size); 
         if(size <=25*1024*1024){ 
          $(".black_overlay").show(); 
          $("#video-form").submit(); 
         }else{ 
          alert("File Size Exceeded"); 
          $("#video-form").reset(); 
          return false; 
         } 
        }', 

       ), 
      )); 

什麼,我得到的是,如果條件成功情況下工作正常,但失敗的情況下,形式不正在重置。

而我正在嘗試的是想在提交之前驗證文件大小。

幫幫我。提前致謝。

回答

1

試試這個在您的規則:

array('yourfile','file', 'types'=>'jpg, gif, png, jpeg', 'maxSize'=>1024 * 1024 * 50, 'tooLarge'=>'File has to be smaller than 50MB'), 

更多細節:

http://www.yiiframework.com/doc/api/1.1/CFileValidator#maxSize-detail

或配置php.ini文件:

http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize

+0

我正在使用CMultiFileUpload,在這裏如何使用CFileValidator。我想用文件選擇本身。你能解釋一下嗎? – Akilan

+0

@Akilan首先你必須在你的模型中複製這個,並通過ajax驗證,也許你必須執行自定義操作。檢查此: http://learnyii.blogspot.com/2010/12/yii.html – Abudayah

0

Cmultifileupl oad文件大小驗證適用於我。

`$this->widget('CMultiFileUpload', array(
      'model'=>$model, 
      'name' => 'audiofile', 
      'max'=>1, 
      'accept' => $filetype, 
      'duplicate' => 'Duplicate file!', 
      'denied' => 'Invalid file type', 

      'htmlOptions'=>array('style'=>'opacity: 0; height: 80px; width: 118px;cursor: pointer;','size'=>25), 
      'options'=>array(

       'afterFileSelect'=>'function(e ,v ,m){ 
       var fileSize = e.files[0].size; 



        if(fileSize>125*1024*1024){ 
         alert("Exceeds file upload limit(500). Uploaded 200 MB not allowed!"); 
         } 
         else 
         { 
         $(".black_overlay").show(); 
         $("#audio-form").submit(); 
         } 

         $("#audio-form").reset(); 
         return false; 

        }',              
      ), 




     )); 
1

你可以試試這個。這將工作

'afterFileSelect'=>'function(e ,v ,m){ 
      var fileSize = e.files[0].size; 
       if(fileSize>800*1024){ <--800KB limit 
        alert("Exceeds file upload limit 800KB"); 
        $(".MultiFile-remove").click(); <--cliks the remove button if size exceeds 
        }      
        return true; 

       }', 
+0

你能詳細說明一下這將如何工作? –

+0

你的意思是我給的代碼?如果是,那麼代碼將找到當前選定的文件大小,並檢查其超過800kb。提醒一個錯誤,並點擊小工具上的刪除按鈕..該文件被刪除,所以你可以上傳另一個 – chmoth

0

爲我工作:

插件( 'CMultiFileUpload',陣列( '模型'=> $模型, '屬性'=> 'updatePhoto', 「 '''>>'>'jpg | jpeg | gif | png', 'name'=>'photos', 'remove'=>'remove', 'options'=> array( 'onFileSelect'=>'function (e,v,m)var fileSize = e.files [0] .size; if(fileSize> 1024 * 1024){// 1MB alert(「Maximum file size 1MB only」); $(「#photos」).reset(); 返回false; } }', ), 'denied'=>'文件不允許', 'max'=> 1,//最多10個文件 )); ?>

+0

我也!我也是!我也是! - 不是答案。如果不具有實際價值,請避免回答舊的問題。 – hakre