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开发入门教程之面向对象
Dec 05 PHP
php 购物车实例(申精)
May 11 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
php中CI操作多个数据库的代码
Jul 05 PHP
输入值/表单提交参数过滤有效防止sql注入的方法
Dec 25 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
Jul 01 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
ThinkPHP中order()使用方法详解
Apr 19 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 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 ftp文件上传函数(基础版)
2010/06/03 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
php实现分页显示
2015/11/03 PHP
php模板引擎技术简单实现
2016/03/15 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
javascript生成随机大小写字母的方法
2014/02/20 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
值得分享的bootstrap table实例
2016/09/22 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
中学家长会邀请函
2014/02/03 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
个人欠款担保书
2014/05/20 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
2014年体育工作总结
2014/11/24 职场文书
回门宴新娘答谢词
2015/09/29 职场文书
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
攻击最高的10只幽灵系神奇宝贝,坚盾剑怪排第一,第五最为可怕
2022/03/18 日漫