Home > Backend Development > PHP Tutorial > thinkphp3.2实现上传图片的控制器方法,_PHP教程

thinkphp3.2实现上传图片的控制器方法,_PHP教程

WBOY
Release: 2016-07-12 08:53:34
Original
773 people have browsed it

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

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

public function file()
{
  $baseUrl = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME']));
  import('ORG.Net.UploadFile');
  import('ORG.Util.Services_JSON');
  $upload = new UploadFile();
  $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 = new Services_JSON();
   echo $json->encode(array('error' => 0, 'url' => $file_url));
   exit;
  } else {
   $this->error($upload->getErrorMsg());
  }
}
public function file_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 "Invalid Directory name.";
   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);
  }
  echo realpath($root_path);
//排序形式,name or size or type
  $order = emptyempty($_GET['order']) ? 'name' : strtolower($_GET['order']);
//不允许使用..移动到上一级目录
  if (preg_match('/\.\./', $current_path)) {
   echo 'Access is not allowed.';
   exit;
  }
//最后一个字符不是/
  if (!preg_match('/\/$/', $current_path)) {
   echo 'Parameter is not valid.';
   exit;
  }
//目录不存在或不是目录
  if (!file_exists($current_path) || !is_dir($current_path)) {
   echo 'Directory does not exist.';
   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-d H: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 = new Services_JSON();
  echo $json->encode($result);
}

Copy after login

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1123821.htmlTechArticlethinkphp3.2实现上传图片的控制器方法, 本文讲述了thinkphp3.2实现上传图片的控制器方法。分享给大家供大家参考,具体如下: public function...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template