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的一个完整SMTP类(解决邮件服务器需要验证时的问题)
Oct 09 PHP
如何跨站抓取别的站点的页面的补充
Oct 09 PHP
目录,文件操作详谈―PHP
Nov 25 PHP
PHP 显示客户端IP与服务器IP的代码
Oct 12 PHP
PHP中Session引起的脚本阻塞问题解决办法
Apr 08 PHP
ThinkPHP中的关联模型注意点
Jun 16 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
Dec 15 PHP
PHP中防止SQL注入方法详解
Dec 25 PHP
ThinkPHP路由详解
Jul 27 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
Aug 23 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 PHP
PHP实现图片压缩
Sep 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
PHP写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
2014/05/08 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
PHP自定义多进制的方法
2016/11/03 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
videocapture库制作python视频高速传输程序
2013/12/23 Python
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
Python实现对百度云的文件上传(实例讲解)
2017/10/21 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
numpy数组拼接简单示例
2017/12/15 Python
浅谈Python NLP入门教程
2017/12/25 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
Python requests.post方法中data与json参数区别详解
2020/04/30 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
数控加工专业毕业生自荐信
2013/09/27 职场文书
2015年中秋节主持词
2015/07/30 职场文书
goland设置颜色和字体的操作
2021/05/05 Golang