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通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 PHP
10个实用的PHP代码片段
Sep 02 PHP
preg_match_all使用心得分享
Jan 31 PHP
PHP5各个版本的新功能和新特性总结
Mar 16 PHP
php实现文件下载实例分享
Jun 02 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
Jul 01 PHP
修复ShopNC使用QQ 互联时提示100010 错误
Nov 08 PHP
HTML中嵌入PHP的简单方法
Feb 16 PHP
ecshop添加菜单及权限分配问题
Nov 21 PHP
php intval函数用法总结
Apr 14 PHP
PHP控制循环操作的时间
Apr 01 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模板引擎SMARTY
2006/10/09 PHP
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
Node.js的特点详解
2017/02/03 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
python爬取内容存入Excel实例
2019/02/20 Python
简单了解python代码优化小技巧
2019/07/08 Python
通过 Django Pagination 实现简单分页功能
2019/11/11 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
物业管理求职自荐信
2013/09/25 职场文书
医学生实习自我鉴定
2013/09/27 职场文书
质检部岗位职责
2013/11/11 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
2015年中学校长工作总结
2015/05/19 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android