直接贴上一个完整的代码
/** * 图片上传方法 * @return [type] [description] */ /** * 1 获取到文件 * 2 验证文件的形状是不是符合上传的规则 * 3 if(true)-> 将他储存到相应的位置 * 4 if(false) -> 返回错误信息 * 5 检查是否储存到了相应位置 * 6 if(false) -> 提示错误信息 */
public function upload($module=‘admin‘,$use=‘admin_thumb‘){ if($this->request->file(‘file‘)){ //获取文件 $file = $this->request->file(‘file‘); }else{ $res[‘code‘]=1; $res[‘msg‘]=‘没有上传文件‘; return json($res); } //has 方法来检测一个变量参数是否设置 param:获取数据 $module = $this->request->has(‘module‘) ? $this->request->param(‘module‘) : $module;//模块 $web_config = Db::name(‘webconfig‘)->where(‘web‘,‘web‘)->find();
/** * config:获取数据 * DS :DIRECTORY_SEPARATOR,文件分隔符,用来统一linux和win下的斜线("/")和反斜线("\") * EXT : Extension,文件扩展名。也就是file.php中.后面的的php * 下面是添加的路径 * 文件/路劲 */、 $attPath = config(‘static_path‘).DS. $module; $attUrl = config(‘static_url‘).DS. $module; /** * 验证上传图片是否符合规定图片形状 * validate 封装在 thinkphp * move(“路径”)移动到某一个路径下 * rule:规则 */ $info = $file->validate([‘size‘=>$web_config[‘file_size‘]*1024,‘ext‘=>$web_config[‘file_type‘]])->rule(‘date‘)->move($attPath); //移动成功 if($info) { //写入到附件表 $data = []; $data[‘module‘] = $module; //模型 $data[‘filename‘] = $info->getFilename();//文件名 /** * getSaveName * 输出文件的位置以及文件名。 * 系统会自动创建以时间为名的文件夹,然后输出文件夹的名字和图片的名字。 */ $data[‘filepath‘] = $attUrl. DS . $info->getSaveName(); // 获得输出文件名的后缀 $data[‘fileext‘] = $info->getExtension(); // 获得文件大小 $data[‘filesize‘] = $info->getSize(); // 获取时间 $data[‘create_time‘] = time(); // 获取IP $data[‘uploadip‘] = $this->request->ip(); // has:参数是否被设置! $data[‘user_id‘] = Session::has(‘admin‘) ? Session::get(‘admin‘) : 0; if($data[‘module‘] = ‘admin‘) { //通过后台上传的文件直接审核通过 $data[‘status‘] = 1; $data[‘admin_id‘] = $data[‘user_id‘]; $data[‘audit_time‘] = time(); } //用处 $data[‘use‘] = $this->request->has(‘use‘) ? $this->request->param(‘use‘) : $use;//用处 //如果获取到pic值 则不保存到附件表,直接返回图片路径到外面操作( 保存到对应数据表pic字段 ) if(!isset($_POST[‘pic‘])){ //insertGetId(“被插入的数据”):获取插入的数据的主键 $res[‘id‘] = Db::name(‘attachment‘)->insertGetId($data); addlog($res[‘id‘]);//记录日志 } /** * getSaveName * 输出文件的位置以及文件名。 * 系统会自动创建以时间为名的文件夹,然后输出文件夹的名字和图片的名字。 */ $res[‘src‘] = $attUrl . DS . $info->getSaveName(); $res[‘code‘] = 2; return json($res); } else { // 上传失败获取错误信息 return $this->error(‘上传失败:‘.$file->getError());
} }
原文地址:https://www.cnblogs.com/mxdmg/p/9719563.html
时间: 2024-10-17 04:33:17