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 相关文章推荐
PHP的开发框架的现状和展望
Mar 16 PHP
批量获取memcache值并按key的顺序返回的实现代码
Jun 14 PHP
Laravel 5 框架入门(一)
Apr 09 PHP
smarty的section嵌套循环用法示例
May 28 PHP
php 判断字符串编码是utf-8 或gb2312实例
Nov 01 PHP
php实用代码片段整理
Nov 12 PHP
php实现文件管理与基础功能操作
Mar 21 PHP
php array_reverse 以相反的顺序返回数组实例代码
Apr 11 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
Apr 10 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
Apr 30 PHP
Laravel find in set排序实例
Oct 09 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
使PHP自定义函数返回多个值
2006/11/26 PHP
php header()函数使用说明
2008/07/10 PHP
php preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
PHP简单遍历对象示例
2016/09/28 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
关于Angularjs中跨域设置白名单问题
2018/04/17 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
express express-session的使用小结
2018/12/12 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
Django自定义manage命令实例代码
2018/02/11 Python
Python 面试中 8 个必考问题
2018/11/16 Python
Python简单基础小程序的实例代码
2019/04/28 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
Java基础类库面试题
2013/09/04 面试题
学校联谊活动方案
2014/02/15 职场文书
企业公益活动策划方案
2014/08/24 职场文书
医院2014国庆节活动策划方案
2014/09/21 职场文书
python爬虫--selenium模块
2021/03/31 Python
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL