当前位置:首页 > CMS教程 > Thinkphp > 列表

thinkphp3.2实现上传图片的控制器方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-30 11:32:59 浏览: 评论:0 

这篇文章主要介绍了thinkphp3.2实现上传图片的控制器方法,结合实例形式分析了thinkPHP图片文件上传相关的文件类型判断,文件路径及相关属性操作技巧,需要的朋友可以参考下。

本文讲述了thinkphp3.2实现上传图片的控制器方法,分享给大家供大家参考,具体如下:

  1. public function file() 
  2.   $baseUrl = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME'])); 
  3.   import('ORG.Net.UploadFile'); 
  4.   import('ORG.Util.Services_JSON'); 
  5.   $upload = new UploadFile(); 
  6.   $upload->maxSize = 3145728; 
  7.   $upload->allowExts = array('jpg''gif''png''jpeg'); 
  8.   $upload->savePath = './uploads/Images/'
  9.   $info = $upload->uploadOne($_FILES['imgFile']); 
  10.   $file_url = $baseUrl . 'uploads/Images/' . $info['0']['savename']; 
  11.   if ($info) { 
  12.    header('Content-type: text/html; charset=UTF-8'); 
  13.    $json = new Services_JSON(); 
  14.    echo $json->encode(array('error' => 0, 'url' => $file_url)); 
  15.    exit
  16.   } else { 
  17.    $this->error($upload->getErrorMsg()); 
  18.   } 
  19. public function file_manager() 
  20.   import('ORG.Util.Services_JSON'); 
  21.   $php_path = dirname(__FILE__) . '/'
  22.   $php_url = dirname($_SERVER['PHP_SELF']) . '/'
  23.   $root_path = $php_path . './uploads/Images/'
  24.   $root_url = $php_url . './uploads/Images/'
  25.   $ext_arr = array('gif''jpg''jpeg''png''bmp'); 
  26.   $dir_name = emptyempty($_GET['dir']) ? '' : trim($_GET['dir']); 
  27.   if (!in_array($dir_namearray('''image''flash''media''file'))) { 
  28.    echo "Invalid Directory name."
  29.    exit
  30.   } 
  31.   if ($dir_name !== '') { 
  32.    $root_path .= $dir_name . "/"
  33.    $root_url .= $dir_name . "/"
  34.    if (!file_exists($root_path)) { 
  35.     mkdir($root_path); 
  36.    } 
  37.   } 
  38. //根据path参数,设置各路径和URL 
  39.   if (emptyempty($_GET['path'])) { 
  40.    $current_path = realpath($root_path) . '/'
  41.    $current_url = $root_url
  42.    $current_dir_path = ''
  43.    $moveup_dir_path = ''
  44.   } else { 
  45.    $current_path = realpath($root_path) . '/' . $_GET['path']; 
  46.    $current_url = $root_url . $_GET['path']; 
  47.    $current_dir_path = $_GET['path']; 
  48.    $moveup_dir_path = preg_replace('/(.*?)[^\/]+\/$/''$1'$current_dir_path); 
  49.   } 
  50.   echo realpath($root_path); 
  51. //排序形式,name or size or type 
  52.   $order = emptyempty($_GET['order']) ? 'name' : strtolower($_GET['order']); 
  53. //不允许使用..移动到上一级目录 
  54.   if (preg_match('/\.\./'$current_path)) { 
  55.    echo 'Access is not allowed.'
  56.    exit
  57.   } 
  58. //最后一个字符不是/ 
  59.   if (!preg_match('/\/$/'$current_path)) { 
  60.    echo 'Parameter is not valid.'
  61.    exit
  62.   } 
  63. //目录不存在或不是目录 
  64.   if (!file_exists($current_path) || !is_dir($current_path)) { 
  65.    echo 'Directory does not exist.'
  66.    exit
  67.   } 
  68. //遍历目录取得文件信息 
  69.   $file_list = array(); 
  70.   if ($handle = opendir($current_path)) { 
  71.    $i = 0; 
  72.    while (false !== ($filename = readdir($handle))) { 
  73.     if ($filename{0} == '.'continue
  74.     $file = $current_path . $filename
  75.     if (is_dir($file)) { 
  76.      $file_list[$i]['is_dir'] = true; //是否文件夹 
  77.      $file_list[$i]['has_file'] = (count(scandir($file)) > 2); //文件夹是否包含文件 
  78.      $file_list[$i]['filesize'] = 0; //文件大小 
  79.      $file_list[$i]['is_photo'] = false; //是否图片 
  80.      $file_list[$i]['filetype'] = ''//文件类别,用扩展名判断 
  81.     } else { 
  82.      $file_list[$i]['is_dir'] = false; 
  83.      $file_list[$i]['has_file'] = false; 
  84.      $file_list[$i]['filesize'] = filesize($file); 
  85.      $file_list[$i]['dir_path'] = ''
  86.      $file_ext = strtolower(pathinfo($file, PATHINFO_EXTENSION)); 
  87.      $file_list[$i]['is_photo'] = in_array($file_ext$ext_arr); 
  88.      $file_list[$i]['filetype'] = $file_ext
  89.     } 
  90.     $file_list[$i]['filename'] = $filename//文件名,包含扩展名 
  91.     $file_list[$i]['datetime'] = date('Y-m-d H:i:s'filemtime($file)); //文件最后修改时间 
  92.     $i++; 
  93.    } 
  94.    closedir($handle); 
  95.   } 
  96. //排序 
  97.   usort($file_list'cmp_func'); 
  98.   $result = array(); 
  99. //相对于根目录的上一级目录 
  100.   $result['moveup_dir_path'] = $moveup_dir_path
  101. //相对于根目录的当前目录 
  102.   $result['current_dir_path'] = $current_dir_path
  103. //当前目录的URL 
  104.   $result['current_url'] = $current_url
  105. //文件数 
  106.   $result['total_count'] = count($file_list); 
  107. //文件列表数组 
  108.   $result['file_list'] = $file_list
  109. //输出JSON字符串 
  110.   header('Content-type: application/json; charset=UTF-8'); 
  111.   $json = new Services_JSON(); 
  112.   echo $json->encode($result); 
  113. }

Tags: thinkphp3 2上传图片

分享到: