本文讲述了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); }
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。