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 Squid中可缓存的动态网页设计
Sep 17 PHP
一步一步学习PHP(5) 类和对象
Feb 16 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
Dec 29 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
php对包含html标签的字符串进行截取的函数分享
Jun 19 PHP
memcache一致性hash的php实现方法
Mar 05 PHP
PHP弱类型的安全问题详细总结
Sep 25 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 09 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 PHP
Laravel模型间关系设置分表的方法示例
Apr 21 PHP
PHP中如何使用Redis接管文件存储Session详解
Nov 28 PHP
PHP const定义常量及global定义全局常量实例解析
May 28 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修改php上传文件大小限制的方法详解
2013/06/17 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
javascript 节点排序 2
2011/01/31 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
2020/08/03 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
python实现连接mongodb的方法
2015/05/08 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
Python与R语言的简要对比
2017/11/14 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
Unineed旗下时尚轻奢网站:FABHunt
2019/05/13 全球购物
打架检讨书50字
2014/01/11 职场文书
大学生标准自荐书
2014/06/15 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL
Python time库的时间时钟处理
2021/05/02 Python