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 相关文章推荐
ajax+php打造进度条 readyState各状态
Mar 20 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
Jul 01 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
Sep 28 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
YII Framework教程之异常处理详解
Mar 14 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
May 20 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
php简单生成一组与多组随机字符串的方法
May 09 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
PHP使用Session实现上传进度功能详解
Aug 06 PHP
Laravel统计一段时间间隔的数据方法
Oct 09 PHP
详解PHP设计模式之依赖注入模式
May 25 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
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
2017/05/26 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
深入了解javascript中的prototype与继承
2013/04/14 Javascript
jquery动态添加option示例
2013/12/30 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
jQuery实现折叠、展开的菜单组效果代码
2015/09/16 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
JavaScript实现单图片上传并预览功能
2019/09/30 Javascript
Python中使用item()方法遍历字典的例子
2014/08/26 Python
python 写的一个爬虫程序源码
2016/02/28 Python
python识别图像并提取文字的实现方法
2019/06/28 Python
Django ImageFiled上传照片并显示的方法
2019/07/28 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
django实现支付宝支付实例讲解
2019/10/17 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
Python如何读取、写入JSON数据
2020/07/28 Python
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
经济与贸易专业应届生求职信
2013/11/19 职场文书
鲜花方阵解说词
2014/02/13 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
医生个人年度总结
2015/02/28 职场文书
超外差式晶体管收音机的组装与统调
2021/04/22 无线电
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL
详解CSS3浏览器兼容
2022/12/24 HTML / CSS