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'); } }