Codeigniter实现多文件上传并创建多个缩略图
该程序可以实现:
1.同时上传5张图片
2.同时生成两种尺寸的缩略图
3.保存到mysql
controllers:upload.php文件:
<?php
classUploadextendsController{
functiongo(){
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'); } }