要上传文件,首先需要在php.ini文件中配置post_max_size和upload_max_filesize.
具体做法如下:
1.首先有一个表单域:
<form action=”<?php echo $this->createUrl(‘Goods/test’); ?>” method=”post” enctype=”multipart/form-data”>
<input type=”file” name=”img” id=””/>
<input type=”submit” value=”upload”/>
</form>
2.在Goods控制器下的test方法中如下写:
public function actionTest(){ //单利类,接收表单的图片,并根据图片生成对象 $img=CUploadedFile::getInstanceByName('img'2.zae); if(is_object($img)&&get_class($img)==='CUploadedFile'){ $fname=time().'_'.rand(0,1111).'.'.$img->extensionName; //生成图片名字和目录 $data=date('Y-m-d'); $dir='./UploadPic/'.$data.'/'; if(!is_dir($dir)){ mkdir($dir,0777);//linux下 $url=$dir.$fname;//图片上传位置 $img->saveAs($url);//上传 }else{ $url=$dir.$fname;//图片上传位置 $img->saveAs($url);//上传 } } }
若要无刷新上传,可以提交到隐藏域中。
<iframe width=”500″ height=”100″ name=”upimg” style=”display:none”></iframe>
指定跳转的地方:
<form target=”upimg” action=”<?php echo $this->createUrl(‘Goods/ajaxupload’); ?>” method=”post” enctype=”multipart/form-data” >
选择图片:<input type=”file” name=”img”/>
<input type=”submit” value=”确定”/>
</form>
批量上传:
<form action="<?php echo $this->createUrl('Goods/tests'); ?>" method="post" enctype="multipart/form-data"> <input type="file" name="img[]" id=""/> <input type="file" name="img[]" id=""/> <input type="file" name="img[]" id=""/> <input type="file" name="img[]" id=""/> <input type="file" name="img[]" id=""/> <input type="submit" value="upload"/> </form>
接收时候:
public function actionTests(){ //多文件上传 set_time_limit(0);//默认30s断开,防止没有上传完 $img=CUploadedFile::getInstancesByName('img'); foreach($img as $file){ if(is_object($file)&&get_class($file)==='CUploadedFile'){ $fname=time().'_'.rand(0,9111).'.'.$file->extensionName; //生成图片名字和目录 $data=date('Y-m-d'); $dir='./UploadPic/'.$data.'/'; if(!is_dir($dir)){ mkdir($dir,0777);//linux下 $url=$dir.$fname;//图片上传位置 $file->saveAs($url);//上传 }else{ $url=$dir.$fname;//图片上传位置 $file->saveAs($url);//上传 } }