<form action="__URL__/upload" enctype="multipart/form-data" method="post" >
<input type="file" name="photo" />
<input type="submit" value="提交" >
</form>
表单中enctype="multipart/form-data"是设置表单的MIME编码,是类上传二进制数据方式,form里面的input的值以二进制的方式传过去的。
默认情况,编码格式是application/x-www-form-urlencoded,不能用于文件上传,
只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作。
public function upload()
{
if (IS_GET) {
$this->display();
exit;
}
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 0 ;// 设置附件上传大小
$upload->exts = array('csv');// 设置附件上传类型
$upload->rootPath = './Public/Uploads/'; // 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
// 上传文件
$info = $upload->upload();
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功
$this->improt('Public/Uploads/'.$info['file']['savepath'].$info['file']['savename'],'utf-8');
}
}
上面中ThinkPHP文件上传操作使用 Think\Upload 类,在上传操作之前,我们可以对上传的属性进行一些设置。在下图中可以看出ThinkPHP对上传操作有着很多的属性支持。
文件上传成功后,就可以使用下图这些文件信息来进行其他的数据操作,例如保存到当前数据表或者单独的附件数据表。