<?php
// 声明命名空间,遵循 PSR-4 自动加载规范,命名空间为 Home\Controller
namespace Home\Controller;
// 导入 Think\Controller 类,以便扩展该类
use Think\Controller;
// 定义 IndexController 类,继承自 Think\Controller 类
class IndexController extends Controller
{
// index 方法,可能是默认页面的控制器方法
public function index()
{
// 显示当前文件的源代码,通常用于调试或展示代码
show_source(__FILE__);
}
// upload 方法,用于处理文件上传功能
public function upload()
{
// 获取上传的文件信息,存储在 $uploadFile 变量中
$uploadFile = $_FILES['file'];
// 检查上传文件的名称,如果包含.php 后缀(不区分大小写),则返回 false
if (strstr(strtolower($uploadFile['name']), ".php")) {
return false;
}
// 实例化 ThinkPHP 的 Upload 类,用于文件上传操作
$upload = new \Think\Upload();
// 设置允许上传的最大文件大小为 4096 字节
$upload->maxSize = 4096;
// 设置允许上传的文件扩展名,仅允许 jpg, gif, png, jpeg 类型的文件
$upload->allowExts = array('jpg', 'gif', 'png', 'jpeg');
// 设置文件上传的根目录为./Public/Uploads/
$upload->rootPath = './Public/Uploads/';
// 设置文件上传的子目录,这里为空
$upload->savePath = '';
// 调用 upload 方法进行文件上传,并将结果存储在 $info 变量中
$info = $upload->upload();
// 如果上传失败,调用 error 方法显示错误信息并返回
if (!$info) {
$this->error($upload->getError());
return;
} else {
// 上传成功时,获取上传文件的存储路径和名称,并组合成完整的 URL
$url = __ROOT__.substr($upload->rootPath, 1).$info['file']['savepath'].$info['file']['savename'];
// 将上传成功的信息和文件 URL 以 JSON 格式输出
echo json_encode(array("url" => $url, "success" => 1));
}
}
}
未完待续