当前位置:首页 > CMS教程 > 其它CMS > 列表

Codeigniter实现多文件上传并创建多个缩略图

发布:smiling 来源: PHP粉丝网  添加日期:2021-02-18 15:27:20 浏览: 评论:0 

这篇文章主要介绍了Codeigniter实现多文件上传并创建多个缩略图,需要的朋友可以参考下。

该程序可以实现:

1.同时上传5张图片

2.同时生成两种尺寸的缩略图

3.保存到mysql

controllers:upload.php文件:

  1. <?php 
  2. class Upload extends Controller { 
  3.   function go() { 
  4.     if(isset($_POST['go'])) { 
  5.       //初始化 
  6.       $config['upload_path'] = 'album/source'
  7.       $config['allowed_types'] = 'gif|jpg|png|bmp|jpeg'
  8.       $config['encrypt_name'] = TRUE; 
  9.       $config['remove_spaces'] = TRUE; 
  10.       $config['max_size']  = '0'
  11.       $config['max_width']  = '0'
  12.       $config['max_height']  = '0'
  13.  
  14.       $this->load->library('upload'$config); 
  15.  
  16.       //170*170图片 
  17.       $configThumb = array(); 
  18.       $configThumb['image_library'] = 'gd2'
  19.       $configThumb['source_image'] = ''
  20.       $configThumb['create_thumb'] = TRUE; 
  21.       $configThumb['maintain_ratio'] = TRUE; //保持图片比例 
  22.       $configThumb['new_image'] = 'album/thumb'
  23.       $configThumb['width'] = 170; 
  24.       $configThumb['height'] = 170; 
  25.       //600*600图片 
  26.       $configLarge = array(); 
  27.       $configLarge['image_library'] = 'gd2'
  28.       $configLarge['source_image'] = ''
  29.       $configLarge['create_thumb'] = TRUE; 
  30.       $configLarge['maintain_ratio'] = TRUE; //保持图片比例 
  31.       $configLarge['new_image'] = 'album/large'
  32.       $configLarge['width'] = 600; 
  33.       $configLarge['height'] = 600; 
  34.  
  35.       $this->load->library('image_lib'); 
  36.  
  37.       for($i = 1; $i < 6; $i++) { 
  38.         $upload = $this->upload->do_upload('image'.$i);       
  39.         if($upload === FALSE) continue
  40.         $data = $this->upload->data();//返回上传文件的所有相关信息的数组 
  41.         $uid = $this->session->userdata('uid'); 
  42.         $uploadedFiles[$i] = $data
  43.  
  44.         if($data['is_image'] == 1) { 
  45.           //初始化170*170  
  46.           $configThumb['source_image'] = $data['full_path']; //文件路径带文件名 
  47.           $this->image_lib->initialize($configThumb); 
  48.           $this->image_lib->resize(); 
  49.           //初始化600*600 
  50.           $configLarge['source_image'] = $data['full_path']; //文件路径带文件名 
  51.           $this->image_lib->initialize($configLarge); 
  52.           $this->image_lib->resize(); 
  53.         } 
  54.  
  55.         //插入图片信息到album表,插入的文件名为source目录文件名 
  56.         $picture = array
  57.             'filename' => $data['file_name'], 
  58.             'albumID' => $this->uri->segment(4,0), 
  59.             'uid' => $this->session->userdata('uid'), 
  60.             'dateline' => time(), 
  61.             'describe' => ''
  62.             'click' => 0 
  63.         ); 
  64.  
  65.         $this->load->model('album_model'); 
  66.         $this->album_model->AddPic($picture); 
  67.         $picture = array(); 
  68.       } 
  69.     } 
  70.     /* 转出 */ 
  71.     $albumID = $this->uri->segment(4); 
  72.     $backurl = site_url() . 'photo/editpic/album/' .$albumID
  73.     $this->session->set_flashdata('msg','图片上传成功.'); 
  74.     redirect($backurl,'refresh'); 
  75.   } 

views:new_pic.view文件:

  1. <form method="post" action="<?php echo site_url() ?>photo/upload/go/<?php echo $albumID ?>" enctype="multipart/form-data"> 
  2.   <input type="file" name="image1" class="files"/><br /> 
  3.   <input type="file" name="image2" class="files"/><br /> 
  4.   <input type="file" name="image3" class="files"/><br /> 
  5.   <input type="file" name="image4" class="files"/><br /> 
  6.   <input type="file" name="image5" class="files"/><br /> 
  7.   <br /> 
  8.   <p><input type="submit" name="go" value="上传照片" class="button" /></p> 
  9. </form> 

此外需要注意:

1.要一次上传几个文件,修改表单和控制器中循环部分的参数就好。

2.album\\source 是上传后原图目录  large和thumb分别是两次执行$this->image_lib->resize();后存放缩略图的目录

3.缩略图文件名如需和album\\source目录一致,请添加参数 $config['thumb_marker'] = '';

4.$picture这部分数组是保存到数据库的东西,可以不用管了。

Tags: Codeigniter 创建多个缩略图

分享到: