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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
详解php的魔术方法__get()和__set()使用介绍
Sep 19 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
利用php下载xls文件(自己动手写的)
Apr 18 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
Sep 04 PHP
PHP中的魔术方法总结和使用实例
May 11 PHP
PHP编程基本语法快速入门手册
Jan 07 PHP
Symfony核心类概述
Mar 17 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 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图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
详解JavaScript原型与原型链
2020/11/16 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
经济学人订阅:The Economist
2018/07/19 全球购物
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
工程质量承诺书范文
2014/03/27 职场文书
财务管理专业求职信
2014/06/11 职场文书
上课迟到检讨书300字
2014/10/15 职场文书
学术会议领导致辞
2015/07/29 职场文书
国家助学金受助感言
2015/08/01 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
JavaScript函数柯里化
2021/11/07 Javascript