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中路径问题的解决方案
Oct 09 PHP
php Ajax乱码
Apr 09 PHP
PHP教程 基本语法
Oct 23 PHP
php类常量的使用详解
Jun 08 PHP
php中的静态变量的基本用法
Mar 20 PHP
php中$_POST与php://input的区别实例分析
Jan 07 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
php+mysql实现简单登录注册修改密码网页
Nov 30 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
Dec 14 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
Sep 15 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中操作ini配置文件的方法
2013/04/25 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
php删除指定目录的方法
2015/04/03 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
python opencv摄像头的简单应用
2019/06/06 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
TCP/IP的分层模型
2013/10/27 面试题
土木工程专业自荐信
2013/10/04 职场文书
音乐教学案例
2014/01/30 职场文书
初中班主任评语大全
2014/04/24 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL