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());
    }
  }
 
 
 
 

转载于:https://www.cnblogs.com/mxdmg/p/9719563.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值