Thinkphp 框架中已经内置了文件上传类,在做文件上传功能的时候只需要调用相应类和类中的方法,就能轻松的上传文件,节省开发时间。
上传表单的设置,上传文件时需要特别定义form表单上传编码为二进制数据,即添加 enctype="multipart/form-data":enctype属性:
application/x-www-form-urlencoded 在发送前编码所有字符(默认)
multipart/form-data 不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。设置表单的MIME编码,input的值以2进制的方式传过去
text/plain 空格转换为 "+" 加号,但不对特殊字符编码。
控制器中上传文件处理代码://判断文件有没有被上传到服务器缓存目录
if($_FILES['file']['tmp_name'] !=''){
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
// 设置附件上传根目录,如果服务器中没有这个目录,必须新建文件夹设置,否则无法上传文件
$upload->rootPath = './Uploads/';
$upload->savePath = ''; // 设置附件上传(子)目录
// 上传文件
$info = $upload->upload();
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功
$this->success('上传成功!');
}
//打印上传完成后返回的上传文件的信息
dump($info);
}