TP5 上传文件
Posted mxdmg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TP5 上传文件相关的知识,希望对你有一定的参考价值。
直接贴上一个完整的代码
/**
* 图片上传方法
* @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());
}
}
以上是关于TP5 上传文件的主要内容,如果未能解决你的问题,请参考以下文章
TP5报如下的错误 Indirect modification of overloaded element of thinkpaginatorCollection has no effect(代码片段