温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

thinkphp3.2如何实现上传图片的控制器

发布时间:2021-08-27 10:12:37 阅读:156 作者:小新 栏目:开发技术
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章给大家分享的是有关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_namearray('''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);
}

感谢各位的阅读!关于“thinkphp3.2如何实现上传图片的控制器”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×