Codeigniter实现多文件上传并创建多个缩略图


Posted in PHP onJune 12, 2014

该程序可以实现:
1.同时上传5张图片
2.同时生成两种尺寸的缩略图
3.保存到mysql

controllers:upload.php文件:

<?php
class Upload extends Controller {
  function go() {
    if(isset($_POST['go'])) {
      //初始化
      $config['upload_path'] = 'album/source'; 
      $config['allowed_types'] = 'gif|jpg|png|bmp|jpeg';
      $config['encrypt_name'] = TRUE;
      $config['remove_spaces'] = TRUE;
      $config['max_size']  = '0';
      $config['max_width']  = '0';
      $config['max_height']  = '0';      $this->load->library('upload', $config);
      //170*170图片
      $configThumb = array();
      $configThumb['image_library'] = 'gd2';
      $configThumb['source_image'] = '';
      $configThumb['create_thumb'] = TRUE;
      $configThumb['maintain_ratio'] = TRUE; //保持图片比例
      $configThumb['new_image'] = 'album/thumb';
      $configThumb['width'] = 170;
      $configThumb['height'] = 170;
      //600*600图片
      $configLarge = array();
      $configLarge['image_library'] = 'gd2';
      $configLarge['source_image'] = '';
      $configLarge['create_thumb'] = TRUE;
      $configLarge['maintain_ratio'] = TRUE; //保持图片比例
      $configLarge['new_image'] = 'album/large';
      $configLarge['width'] = 600;
      $configLarge['height'] = 600;
      $this->load->library('image_lib');
      for($i = 1; $i < 6; $i++) {
        $upload = $this->upload->do_upload('image'.$i);       
        if($upload === FALSE) continue;
        $data = $this->upload->data();//返回上传文件的所有相关信息的数组
        $uid = $this->session->userdata('uid');
        $uploadedFiles[$i] = $data;
        if($data['is_image'] == 1) {
          //初始化170*170  
          $configThumb['source_image'] = $data['full_path']; //文件路径带文件名
          $this->image_lib->initialize($configThumb);
          $this->image_lib->resize();
          //初始化600*600
          $configLarge['source_image'] = $data['full_path']; //文件路径带文件名
          $this->image_lib->initialize($configLarge);
          $this->image_lib->resize();
        }
        //插入图片信息到album表,插入的文件名为source目录文件名
        $picture = array(
            'filename' => $data['file_name'],
            'albumID' => $this->uri->segment(4,0),
            'uid' => $this->session->userdata('uid'),
            'dateline' => time(),
            'describe' => '',
            'click' => 0
        );
        $this->load->model('album_model');
        $this->album_model->AddPic($picture);
        $picture = array();
      }
    }

    /* 转出 */
    $albumID = $this->uri->segment(4);
    $backurl = site_url() . 'photo/editpic/album/' .$albumID;
    $this->session->set_flashdata('msg','图片上传成功.');
    redirect($backurl,'refresh');
  }
}

views:new_pic.view文件:

<form method="post" action="<?php echo site_url() ?>photo/upload/go/<?php echo $albumID ?>" enctype="multipart/form-data">
  <input type="file" name="image1" class="files"/><br />
  <input type="file" name="image2" class="files"/><br />
  <input type="file" name="image3" class="files"/><br />
  <input type="file" name="image4" class="files"/><br />
  <input type="file" name="image5" class="files"/><br />
  <br />
  <p><input type="submit" name="go" value="上传照片" class="button" /></p>
</form>

此外需要注意:

1.要一次上传几个文件,修改表单和控制器中循环部分的参数就好。
2.album\\source 是上传后原图目录  large和thumb分别是两次执行$this->image_lib->resize();后存放缩略图的目录
3.缩略图文件名如需和album\\source目录一致,请添加参数 $config['thumb_marker'] = '';
4.$picture这部分数组是保存到数据库的东西,可以不用管了。

PHP 相关文章推荐
php jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
PHP备份数据库生成SQL文件并下载的函数代码
Feb 05 PHP
PHP判断图片格式的七种方法小结
Jun 03 PHP
解析php中获取url与物理路径的总结
Jun 21 PHP
codeigniter数据库操作函数汇总
Jun 12 PHP
PHP人民币金额转大写实例代码
Oct 02 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
PHP MVC框架路由学习笔记
Mar 02 PHP
PHP并发查询MySQL的实例代码
Aug 09 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
Jan 29 PHP
PHP运用foreach神奇的转换数组(实例讲解)
Feb 01 PHP
PHP 并发场景的几种解决方案
Jun 14 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 #PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 #PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 #PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 #PHP
Codeigniter整合Tank Auth权限类库详解
Jun 12 #PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
Jun 12 #PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 #PHP
You might like
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
PHP文件与目录操作示例
2016/12/24 PHP
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
Jquery attr(&quot;checked&quot;) 返回checked或undefined 获取选中失效
2013/10/10 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
Python入门篇之编程习惯与特点
2014/10/17 Python
python中readline判断文件读取结束的方法
2014/11/08 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
快速入手Python字符编码
2016/08/03 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
python统计中文字符数量的两种方法
2019/01/31 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
selenium+python环境配置教程详解
2019/05/28 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
python里反向传播算法详解
2020/11/22 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
学习决心书范文
2014/03/11 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
Python内置数据结构列表与元组示例详解
2021/08/04 Python
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技