只需要在common.php文件里写好方法,在其他地方可以直接使用这个方法
下面是一个文件上传的示例:
common.php文件:
<?php
/***
* @param $files //需要上传的文件
* @param $path // 文件存储的路径
* @param $imagesExt // 文件类型
* @return string
*/
function uploadFile($files, $path ,$fileType){
// 判断错误号
if ($files['error'] == 00) {
$ext = strtolower(pathinfo($files['name'],PATHINFO_EXTENSION));
// 判断文件类型
if (!in_array($ext,$fileType)){
return "非法文件类型";
}
// 判断是否存在上传到的目录
if (!is_dir($path)){
mkdir($path,0777,true);
}
// 生成唯一的文件名
$fileName = md5(uniqid(microtime(true),true)).'.'.$ext;
// 将文件名拼接到指定的目录下
$destName = $path."/".$fileName;
// 进行文件移动
if (!move_uploaded_file($files['tmp_name'],$destName)){
return "文件上传失败!";
}
return $destName;
} else {
// 根据错误号返回提示信息
switch ($files['error']) {
case 1:
return "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";
break;
case 2:
return "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";
break;
case 3:
return "文件只有部分被上传";
break;
case 4:
return "没有文件被上传";
break;
case 6:
return "找不到临时文件夹";
break;
case 7:
return "系统错误";
break;
}
}
}
控制器Case.php:
<?php
namespace app\home\controller;
use think\Controller;
use think\Db;
use think\Request;
class Case extends Controller{
public function case_adds(Request $request){
$post = $request->post();
$file = $_FILES;
$videopath = "./uploads/video";//上传视频用的
$imagepath = "./uploads/images";//上传图片用的
$imageExt = ['mp4'];//上传视频用的
$imageExt = ['jpg', 'jpeg', 'gif', 'png'];//上传图片用的
$coverUrl = uploadFile($file['cover'],$imagepath,$imageExt);
//获取到的图片或视频上传后的地址
// 将获取到的数据插入数据库
$data = [
'name' => $post['name'],
'cover' => $coverUrl,
];
$res = Db::name('case')->insert($data);
if ($res){
return $this->success("新增成功",'/home/case');
}else{
return $this->error("案例新增失败");
}
}
}