thinkphp3.2实现上传图片的控制器方法
本文讲述了thinkphp3.2实现上传图片的控制器方法。分享给大家供大家参考,具体如下:
publicfunctionfile() { $baseUrl=str_replace('\\','/',dirname($_SERVER['SCRIPT_NAME'])); import('ORG.Net.UploadFile'); import('ORG.Util.Services_JSON'); $upload=newUploadFile(); $upload->maxSize=3145728; $upload->allowExts=array('jpg','gif','png','jpeg'); $upload->savePath='./uploads/Images/'; $info=$upload->uploadOne($_FILES['imgFile']); $file_url=$baseUrl.'uploads/Images/'.$info['0']['savename']; if($info){ header('Content-type:text/html;charset=UTF-8'); $json=newServices_JSON(); echo$json->encode(array('error'=>0,'url'=>$file_url)); exit; }else{ $this->error($upload->getErrorMsg()); } } publicfunctionfile_manager() { import('ORG.Util.Services_JSON'); $php_path=dirname(__FILE__).'/'; $php_url=dirname($_SERVER['PHP_SELF']).'/'; $root_path=$php_path.'./uploads/Images/'; $root_url=$php_url.'./uploads/Images/'; $ext_arr=array('gif','jpg','jpeg','png','bmp'); $dir_name=emptyempty($_GET['dir'])?'':trim($_GET['dir']); if(!in_array($dir_name,array('','image','flash','media','file'))){ echo"InvalidDirectoryname."; exit; } if($dir_name!==''){ $root_path.=$dir_name."/"; $root_url.=$dir_name."/"; if(!file_exists($root_path)){ mkdir($root_path); } } //根据path参数,设置各路径和URL if(emptyempty($_GET['path'])){ $current_path=realpath($root_path).'/'; $current_url=$root_url; $current_dir_path=''; $moveup_dir_path=''; }else{ $current_path=realpath($root_path).'/'.$_GET['path']; $current_url=$root_url.$_GET['path']; $current_dir_path=$_GET['path']; $moveup_dir_path=preg_replace('/(.*?)[^\/]+\/$/','$1',$current_dir_path); } echorealpath($root_path); //排序形式,nameorsizeortype $order=emptyempty($_GET['order'])?'name':strtolower($_GET['order']); //不允许使用..移动到上一级目录 if(preg_match('/\.\./',$current_path)){ echo'Accessisnotallowed.'; exit; } //最后一个字符不是/ if(!preg_match('/\/$/',$current_path)){ echo'Parameterisnotvalid.'; exit; } //目录不存在或不是目录 if(!file_exists($current_path)||!is_dir($current_path)){ echo'Directorydoesnotexist.'; exit; } //遍历目录取得文件信息 $file_list=array(); if($handle=opendir($current_path)){ $i=0; while(false!==($filename=readdir($handle))){ if($filename{0}=='.')continue; $file=$current_path.$filename; if(is_dir($file)){ $file_list[$i]['is_dir']=true;//是否文件夹 $file_list[$i]['has_file']=(count(scandir($file))>2);//文件夹是否包含文件 $file_list[$i]['filesize']=0;//文件大小 $file_list[$i]['is_photo']=false;//是否图片 $file_list[$i]['filetype']='';//文件类别,用扩展名判断 }else{ $file_list[$i]['is_dir']=false; $file_list[$i]['has_file']=false; $file_list[$i]['filesize']=filesize($file); $file_list[$i]['dir_path']=''; $file_ext=strtolower(pathinfo($file,PATHINFO_EXTENSION)); $file_list[$i]['is_photo']=in_array($file_ext,$ext_arr); $file_list[$i]['filetype']=$file_ext; } $file_list[$i]['filename']=$filename;//文件名,包含扩展名 $file_list[$i]['datetime']=date('Y-m-dH:i:s',filemtime($file));//文件最后修改时间 $i++; } closedir($handle); } //排序 usort($file_list,'cmp_func'); $result=array(); //相对于根目录的上一级目录 $result['moveup_dir_path']=$moveup_dir_path; //相对于根目录的当前目录 $result['current_dir_path']=$current_dir_path; //当前目录的URL $result['current_url']=$current_url; //文件数 $result['total_count']=count($file_list); //文件列表数组 $result['file_list']=$file_list; //输出JSON字符串 header('Content-type:application/json;charset=UTF-8'); $json=newServices_JSON(); echo$json->encode($result); }
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。