/*
* 单文件上传接口
*/
public function upload() {
if (!empty($_FILES)) {
$upload = new \Think\Upload();
$upload -> maxSize = 2 * 1024 * 1024;
// 设置文件最大2M
// 允许上传的文件后缀(留空为不限制),使用数组或者逗号分隔的字符串设置,默认为空
$upload -> exts = array('jpg', 'gif', 'png', 'jpeg');
// 允许上传的文件类型(留空为不限制),使用数组或者逗号分隔的字符串设置,默认为空
$upload -> mimes = '';
$upload -> rootPath = './Uploads/';
// 设置附件上传根目录
$upload -> savePath = '';
// 设置上传的子目录
$upload -> saveName = 'uniqid';
// 上传文件的保存规则,支持数组和字符串方式定义
$upload -> saveExt = '';
// 上传文件的保存后缀,不设置的话使用原文件后缀
$upload -> replace = true;
// 存在同名文件是否是覆盖,默认为false
$upload -> autoSub = true;
// 自动使用子目录保存上传文件 默认为true
$upload -> subName = array('date', 'Ymd');
// 子目录创建方式,采用数组或者字符串方式定义
$upload -> hash = true;
// 是否生成文件的hash编码 默认为true
// 上传成功
if ($fileInfo = $upload -> uploadOne($_FILES['image'])) {
$upoadRoot = './Uploads/';
$filename = $fileInfo['savename'];
$savepath = $fileInfo['savepath'];
// 添加水印
$image = new \Think\Image();
$path = $upoadRoot . $savepath . $filename;
$image -> open($path) -> water('./Public/Images/logo.png') -> save($path);
/*
* 把上传的路径写入数据库
*/
$photoModel = M('Photo');
$data['image'] = $path;
$data['create_time'] = NOW_TIME;
// 时间截
if ($photoModel -> add($data)) {
$this -> success('上传成功');
} else {
$this -> error($photoModel -> getError());
}
} else {// 上传出错
$this -> error($upload -> getError());
}
} else {
$this -> error('请选择文件');
}
}
这个过程中出现了 操作出现错误的提示,是由于我把add方法写成了save方法了,花了不少时间来排查。