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程序设计有所帮助。