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

时间: 2024-10-17 04:33:17

TP5 上传文件的相关文章

TP5 上传文件 中文乱码问题

在原文件file类中找到move方法 因为保存的时候使用的是utf-8但是用于保存在硬盘上的目录需要使用的是gbk编码 所以需要转码, 返回文件名的时候 需要把gbk的编码转回utf8,不然可能会报错. 参考链接http://www.thinkphp.cn/topic/51891.html http://www.thinkphp.cn/topic/13461.html 原文地址:https://www.cnblogs.com/chenweihao/p/10025976.html

万家报账平台没有“上传文件”按钮的解决办法

在有的电脑没有"上传文件"的按钮? 第一步:首先检查浏览器设置. 第二步:找到IE的Internet选项菜单,开启菜单栏的根据下列方面找,如下图: 第三步:找到Internet选项后,点击,选择安全选项卡,并点击"自定义级别" 第四步:找到"将文件上载到服务器时包含本地目录路径"选择"启用".然后点击确定关闭IE,重启打开. 第五步:更新浏览器的flash版本.在百度中搜索"flash player官网"即

通过jQuery Ajax使用FormData对象上传文件

转自:http://www.cnblogs.com/labnizejuly/p/5588444.html FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". <form id="uploadForm" enctype="multipart/form-data"> <input id="file" type="file"

数据采集之Web端上传文件到Hadoop HDFS

前言 最近在公司接到一个任务,是关于数据采集方面的. 需求主要有3个: 通过web端上传文件到HDFS; 通过日志采集的方式导入到HDFS; 将数据库DB的表数据导入到HDFS. 正好最近都有在这方面做知识储备.正所谓养兵千日,用兵一时啊.学习到的东西只有应用到真实的环境中才有意义不是么. 环境 这里只做模拟环境,而不是真实的线上环境,所以也很简单,如果要使用的话还需要优化优化. OS Debian 8.7 Hadoop 2.6.5 SpringBoot 1.5.1.RELEASE 说明一下,这

ssh连接服务器以及scp上传文件方法

本地控制台输入 ssh [email protected]外网ip或内网ip,举例:ssh [email protected]      这是用用户名为root的用户登录192.168.133.196这个地址所在的后台.如果提示以下红色部分错误: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @ @@@@@@

php+curl上传文件

因为公司项目用java做的,需要我这边用php上传文件.只给了个接口,参数都不明确,然后这边不提交表单,在生成pdf之后就立马上传.用了php+curl,总是没上传成功,这里看到了篇文章http://blog.sina.com.cn/s/blog_709475a101013dlf.html,希望可以借鉴.还有这篇http://www.cnblogs.com/jackluo/p/4113255.html

shell案例 - 统计用户上传文件的时间

问题与需求: 一个web服务跑论坛,每天都有很多用户会上传文件到服务器里,假设这些文件会保存在/data/www/attachment目录下,我想知道用户大概会在什么时候上传文件? 从而了解用户的行为习惯 解决思路: 1. 判断新文件是否被上传到了服务器里?以5分钟为一个间隔,进行检测. 2. 确定这些文件是什么时候被上传的? 3. 将新文件的列表输出到一个按年.月.日.时.分为名字的日志里,以方便我们进行查看分析 4. 写一个shell脚本来帮我们自动实现这个检测和记录的过程,当然只检测一次是

如何解决上传文件时文件内容相同

现在有这样一个需求:要求在上传文件时,凡是上传的文件,只要内容相同就只在服务器保存一份. 如何比较文件内容?如果当时思维受限,很难想到来比较文件内容的办法. 解决办法: 文件上传,肯定少不了用流来读文件,文件内容相同的根源就是:流读出来的字节码相同.这就想到了解决的办法,可是问题又来了.怎么比较字节码?想想那么长的字节码,如果用字符串的equals方法来比较,这不是一个好的解决办法.经过一番思考,我决定把流读出来的字节码进行MD5加密,用加密后的字符串来当作文件的文件名,然后在进行文件的上传(文

js 上传文件后缀名的判断 var flag=false;应用

js 上传文件后缀名的判断  var flag=false;应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &