2013-06-19 106 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