PHP实现多图上传和单图上传功能


Posted in PHP onMay 17, 2018

下面一段代码给大家介绍php实现单图上传和多图上传的功能,具体代码如下所示:

/**
   * 多选图片上传
   * 
   * @version v1.0.0
   * @author 
   * @since  17-11-24
   */
  public function upload()
  {
    $file = $_FILES['file'];
    empty($file) && $this->response(201,'请选择要上传的文件');
    unset($_FILES['file']);
    $count = count($file['name']);       // 上传图片的数量
    $count > 10 && $this->response(203,'批量上传图片一次最多上传10张图片');
    $tmpFile  = [];
    $returnData = [];
    for($i=0;$i<$count;$i++)          // 循环处理图片
    {
      $tmpFile['name']   = $file['name'][$i];
      $tmpFile['type']   = $file['type'][$i];
      $tmpFile['tmp_name'] = $file['tmp_name'][$i];
      $tmpFile['error']  = $file['error'][$i];
      $tmpFile['size']   = $file['size'][$i];
      $_FILES['file_'.$i] = $tmpFile;
      // 判断是否是允许的图片类型
      $ext = substr($_FILES['file_'.$i]['name'],strrpos($_FILES['file_'.$i]['name'],'.')+1); // 上传文件后缀
      stripos('jpeg|png|bmp|jpg',$ext) === FALSE && $this->response(210,'图片格式支持 JPEG、PNG、BMP格式图片');
      $data = $this->uploadOne('file_'.$i,'jpeg|png|bmp|jpg');
      if($data['status'] == 1)
      {
        $this->response(500,'第'.($i+1).'张图片上传失败,'.$data['msg']);
      }
      $returnData[$i]['url']   = $data['url'];   // 图片路径
      $returnData[$i]['old_name'] = substr($tmpFile['name'],0,strrpos($tmpFile['name'], '.')); // 图片原名称
    }
    $this->response(200,'successful',$returnData);
  }
   /**
   * 单文件上传
   * @version v1.0.0
   * @author  
   * @since  17-11-24
   * @param  $file   上传表单name名称
   * @param  $type   上传类型
   * @param  $maxSize 上传文件限制大小(默认 10M)
   */
  private function uploadOne($filename = 'file',$type = 'jpeg|png|bmp|jpg',$maxSize = 10240)
  {
    list($width,$height)    = getimagesize($_FILES[$filename]['tmp_name']); // 获取图片的宽和高
    list($usec, $sec) = explode(" ", microtime());
    $time = $sec.substr($usec,2);                         // 秒数+微秒数
    $ext = substr($_FILES[$filename]['name'],strrpos($_FILES[$filename]['name'],'.')+1); // 上传文件后缀
    $name   = $time.'-'.$width.'*'.$height.'.'.$ext;
    $filePath = $_FILES[$filename]['tmp_name'];
    $type   = $_FILES[$filename]['type'];
    $this->load->library('Qiniu');
    $returnData['url'] = $this->qiniu->upload($name,$filePath,$type);
    $returnData['status'] = 0;
    return $returnData;
  }

总结

以上所述是小编给大家介绍的PHP实现多图上传和单图上传功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
用PHP实现验证码功能
Oct 09 PHP
一个ORACLE分页程序,挺实用的.
Oct 09 PHP
php下目前为目最全的CURL中文说明
Aug 01 PHP
探讨如何把session存入数据库
Jun 07 PHP
解析PHP 使用curl提交json格式数据
Jun 29 PHP
Smarty使用自定义资源的方法
Aug 08 PHP
PHP信号量基本用法实例详解
Feb 12 PHP
php分页原理 分页代码 分页类制作教程
Sep 23 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 PHP
discuz论坛更换域名,详细文件修改步骤
Dec 09 PHP
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
Mar 14 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 #PHP
PHP多维数组指定多字段排序的示例代码
May 16 #PHP
php strftime函数获取日期时间(switch用法)
May 16 #PHP
Phpstorm+Xdebug断点调试PHP的方法
May 14 #PHP
Laravel 集成 Geetest验证码的方法
May 14 #PHP
PHP 多任务秒级定时器的实现方法
May 13 #PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 #PHP
You might like
松下Panasonic RF-B65电路分析
2021/03/02 无线电
PHP面向对象编程快速入门
2006/12/14 PHP
刚才在简化php的库,结果发现很多东西
2006/12/31 PHP
Zend Guard一些常见问题解答
2008/09/11 PHP
基于php无限分类的深入理解
2013/06/02 PHP
php操作xml
2013/10/27 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
JQuery之拖拽插件实现代码
2011/04/14 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
Angularjs CURD 详解及实例代码
2016/09/14 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
Python中的装饰器用法详解
2015/01/14 Python
使用Python生成url短链接的方法
2015/05/04 Python
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
NumPy 基本切片和索引的具体使用方法
2019/04/24 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
Python Switch Case三种实现方法代码实例
2020/06/18 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
Python Http请求json解析库用法解析
2020/11/28 Python
工程造价自荐信
2013/10/09 职场文书
音乐教学案例
2014/01/30 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
师德师风整改措施
2014/10/24 职场文书
《分数的意义》教学反思
2016/02/20 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang