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 相关文章推荐
人大复印资料处理程序_查询篇
Oct 09 PHP
php 数据库字段复用的基本原理与示例
Jul 22 PHP
PHP 简易输出CSV表格文件的方法详解
Jun 20 PHP
PHP捕获Fatal error错误的方法
Jun 11 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
php通过会话控制实现身份验证实例
Oct 18 PHP
Yii2实现多域名跨域同步登录退出
Feb 04 PHP
php格式文件打开的四种方法
Feb 24 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
php使用curl模拟多线程实现批处理功能示例
Jul 25 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 PHP
基于PHP实现堆排序原理及实例详解
Jun 19 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
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
实例讲解PHP面向对象之多态
2014/08/20 PHP
php生成图片验证码
2015/06/09 PHP
golang与PHP输出excel示例
2016/07/22 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
2016/10/13 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
Vue学习笔记进阶篇之单元素过度
2017/07/19 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
python查询mysql,返回json的实例
2018/03/26 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
Python assert语句的简单使用示例
2019/07/28 Python
解决python 找不到module的问题
2020/02/12 Python
Python数组并集交集补集代码实例
2020/02/18 Python
django教程如何自学
2020/07/31 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
毕业生教师求职信
2013/10/20 职场文书
师范应届生教师求职信
2013/11/05 职场文书
兼职业务员岗位职责
2014/01/01 职场文书
高三生物教学反思
2014/01/25 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
Python编程super应用场景及示例解析
2021/10/05 Python
详解python的异常捕获
2022/03/03 Python