0

我想上傳3張圖像並創建它們的縮略圖並希望將它們的名稱存儲在數據庫中。 任何想法該怎麼做。 NOte我已經閱讀了許多論壇和問題,但沒有人幫助我在數據庫中進行上傳和存儲。這裏是我爲1張圖片所做的,它會幫助我,如果我可以以同樣的方式對多張圖片進行同樣的處理修改聲明爲public function do_upload($field = 'userfile')如何在codeigniter中上傳多個圖像和克里特拇指,並將其名稱與其他文件一起存儲在數據庫中

View

<p> 
    <label>Image 1</label> 
    <input type="file" name="userfile" value=""/> 

// I want same kind of anothe two uploads say image2,image3 
</p> 

Controller

function insert() 
{ 
$data = array('title'=>'Add New Image', 
'link_add'=>site_url('manage/img_gallaryslider/add'), 
'edit_link'=>site_url('manage/img_gallaryslider/edit'), 'action'=>site_url('manage/img_gallaryslider/insert'), 
'link_back'=>site_url('manage/img_gallaryslider'), 
'tbl'=>'imgslider'); 
$this->_set_fields(); 
$this->_set_rules(); 
if ($this->form_validation->run() == TRUE) 
    { 
     $config['upload_path'] = './images/imagegallaryslider'; 
     $config['allowed_types'] = 'gif|jpg|png'; 
     $config['max_size'] = '1000'; 
     $config['max_width'] = '1024'; 
     $config['max_height'] = '768'; 
     $this->load->library('upload', $config); 
     if (! $this->upload->do_upload()) 
     { 
      $error = array('error' => $this->upload->display_errors()); 
      if($_FILES['userfile']['name']=='') 
     { 
     $data['upload_error']='<strong>Error: Please, select image to upload</strong>'; 
     } 
     else 
     { 
      $data['upload_error']='<strong>Error:Invalid file format or size</strong>'; 
     } 
     $this->load->view('manage/includes/header', $data); 
     $this->load->view('manage/img_gallaryslideredit', $data); 
     $this->load->view('manage/includes/footer'); 
     } 
     else 
     { 
      $data = array('upload_data' => $this->upload->data()); 
      $filename= $this->upload->data(); 
      $file_name=$this->upload->file_name; 
       $this->create_thumb($file_name); 
     // save data 

     $this->ip_date = $this->admin_model->get_date_ip(); 
     $value_array = array('Name' => $this->input->post('name'), 
          'Image'=>$this->upload->file_name, 
         'CreatedBy' => $this->session->userdata('adminid'), 
         'CreatedDate'=>$this->ip_date->cur_date, 
         'CreatedIp'=>$this->ip_date->ip); 
    $id = $this->admin_model->save('imggallaryslider',$value_array); 
    $this->session->set_flashdata('notification',$this->lang->line('gen_succ_added')); 
    redirect(site_url('manage/img_gallaryslider/index')); 
    die(); 
    } 
    } 
    else 
     { 
     $this->load->view('manage/includes/header', $data); 
     $this->load->view('manage/img_gallaryslideredit', $data); 
     $this->load->view('manage/includes/footer'); 
    } 

} 
function create_thumb($file_name) 
    { 
     $config['image_library'] = 'gd2'; 
     $config['source_image'] = './images/imagegallaryslider/'.$file_name;  
     $config['create_thumb'] = FALSE; 
     $config['maintain_ratio'] = TRUE; 
     $config['width'] = 70; 
     $config['height'] = 50; 
     $config['new_image'] = './images/imagegallaryslider/thumb/'.$file_name; 
     $this->load->library('image_lib', $config); 
     $this->image_lib->resize(); 
     if(!$this->image_lib->resize()) 
     { 
      echo $this->image_lib->display_errors(); 
     } 
    } 

model

function save($table,$value) 
    { 
    $this->db->insert($table, $value); 
    return $this->db->insert_id(); 
    }  
</code> 
+0

檢查[這裏](http://www.web-and-development.com/image-crud-an-automatic-multiple-image-uploader-for-codeigniter/) –

+0

你有任何錯誤?可能它會幫助你將任務分解爲3個不同的任務 –

+0

我認爲'create_thumb()'和'insert()'的bigest部分應該在模型 –

回答

1

The method do_upload(), 所以你可以用它在你的代碼,如:

private function uploads() { 
    $config['upload_path'] = './images/imagegallaryslider'; 
    $config['allowed_types'] = 'gif|jpg|png'; 
    $config['max_size'] = '1000'; 
    $config['max_width'] = '1024'; 
    $config['max_height'] = '768'; 
    $this->load->library('upload', $config); 
    //<--HERE the several images handler 
    foreach (array('userfile','img1','img2' as $field) { 
    if (! $this->upload->do_upload($field)) 
    { 
     $error = array('error' => $this->upload->display_errors()); 
     if($_FILES[$field]['name']=='') 
    { 
    $data['upload_error']='<strong>Error: Please, select image to upload</strong>'; 
    } 
    else 
    { 
     $data['upload_error']='<strong>Error:Invalid file format or size</strong>'; 
    } 
    return $data; 
    } 
    $data = array('upload_data' => $this->upload->data()); 
    $filename= $this->upload->data(); 
    $file_name=$this->upload->file_name; 
    $this->create_thumb($file_name); 
    // save data 
    $this->ip_date = $this->admin_model->get_date_ip(); 
    $value_array = array('Name' => $this->input->post('name'), 
         'Image'=>$this->upload->file_name, 
        'CreatedBy' => $this->session->userdata('adminid'), 
        'CreatedDate'=>$this->ip_date->cur_date, 
        'CreatedIp'=>$this->ip_date->ip); 
    $id = $this->admin_model->save('imggallaryslider',$value_array); 
} 
$this->session->set_flashdata('notification',$this->lang->line('gen_succ_added')); 
redirect(site_url('manage/img_gallaryslider/index')); 
die(); 
} 

鑑於它應該看起來像:

<p> 
    <label>Image 1</label> 
    <input type="file" name="userfile" value=""/> 
    <input type="file" name="img1" value=""/> 
    <input type="file" name="img2" value=""/> 
</p> 
+0

這意味着我必須在我的upolad庫中編輯上面的代碼?????和數據庫中插入的內容 –

+0

嗯我做'上傳'只是一種方法,能夠在第一次錯誤後返回。關於數據庫插入的' –

+0

','$ this-> myimagemodel-> insert($ filename)'是不夠的?你在一個問中提出了3個問題,不可能一次回答所有問題,嘗試一些,提出新問題,不要問我代碼 –

相關問題