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 radio 单选框获取与保持值的实现代码
May 15 PHP
PHP学习之字符串比较和查找
Apr 17 PHP
关于php循环跳出的问题
Jul 01 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
PHP答题类应用接口实例
Feb 09 PHP
php中header设置常见文件类型的content-type
Jun 23 PHP
PHP中的类型提示(type hinting)功能介绍
Jul 01 PHP
php获取英文姓名首字母的方法
Jul 13 PHP
PHP网站建设的流程与步骤分享
Sep 25 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
对laravel in 查询的使用方法详解
Oct 09 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
PHP 采集获取指定网址的内容
2010/01/05 PHP
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
VUE预渲染及遇到的坑
2018/09/03 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
简单了解python单例模式的几种写法
2019/07/01 Python
python实现udp聊天窗口
2020/03/31 Python
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
环境工程大学生个人的自我评价
2013/10/08 职场文书
中专毕业生自我鉴定范文
2013/11/09 职场文书
团购业务员岗位职责
2014/03/15 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
工作感想范文
2015/08/07 职场文书
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL