Menggunakan 2 Input Upload didalam 1 Form di Codeigniter

bagikan postingan ini...Share on email
Email
Share on facebook
Facebook
Share on google
Google
Share on twitter
Twitter
Share on linkedin
Linkedin

Ada kalanya didalam mengerjakan suatu project kita diminta untuk menggunakan 2 fitur upload file didalam satu form. Dalam kasus saya sendiri, saya diminta untuk menambahkan inputupload sinopsis pada aplikasi e-library. Sebelumnya disini sudah ada input untuk mengupload foto cover buku.

Begini kira2 form sebelum ditambahkan input sinopsis tersebut

<form action="<?=base_url()?>katalog/insert" enctype="multipart//form-data">
Nama Buku: <input name="nama_buku" type="text" />
Cover Buku: <input name="cover_buku" type="file" />
</form>

Kemudian saya tambahkan satu input lagi untuk sinopsis buku

<form action="<?=base_url()?>katalog/insert" enctype="multipart//form-data">
Nama Buku: <input name="nama_buku" type="text" />
Cover Buku: <input name="file_foto" type="file" />
Sinopsis Buku : <input name="file_sinopsis" type="file" />
</form>

Untuk form action nya, yang berada di controller, dapat dikonfigurasi seperti script berikut ini:

public function insert(){

$upload1= $_FILES['file_sinopsis']['name'];
$upload2= $_FILES['filefoto']['name'];

if($upload1 !== ""){
$this->load->library('upload');
$nmsinopsis = "snpss_".time();
$config_sinopsis['overwrite'] = false;
$config_sinopsis['upload_path'] = './asset/images/cover_buku/'; 
$config_sinopsis['allowed_types'] = 'pdf|doc|docx'; 
$config_sinopsis['file_name'] = $nmsinopsis; 
$this->upload->initialize($config_sinopsis);
if($_FILES['file_sinopsis']['name']){
if ($this->upload->do_upload('file_sinopsis')){
$sinopsis=$this->upload->data();
$sinopsis_file=$sinopsis['file_name'];
}
}
}else{
$sinopsis_file="";
}

if($upload2 !== ""){
$this->load->library('upload');
$nmfile = "file_".time(); 
$config['overwrite'] = false;
$config['upload_path'] = './asset/images/cover_buku/'; /
$config['allowed_types'] = 'gif|jpg|png|jpeg|bmp'; 
$config['file_name'] = $nmfile; 
$this->upload->initialize($config);
if($_FILES['filefoto']['name']){
if ($this->upload->do_upload('filefoto')){
$gbr = $this->upload->data();;
$gambar = $gbr['file_name'];
}
}
}else{
$gambar="no_cover.gif";
}

$data = array(
'sinopsis' => $sinopsis_file,
'image' =>$gambar,
'judul'=>$this->input->post('Judul'),
);

$this->katalog->tambah($data); 
redirect('katalog'); 

}

Masing-masing input diberikan config yang berbeda, sehingga untuk masing2 input kita bisa memfilter jenis file yang boleh di upload, lokasi penyimpanan file tersebut, penamaan file, dan sebagainya. Perhatikan config untuk file_sinopsis berikut

$this->load->library('upload');
$nmsinopsis = "snpss_".time();
$config_sinopsis['overwrite'] = false;
$config_sinopsis['upload_path'] = './asset/images/cover_buku/'; 
$config_sinopsis['allowed_types'] = 'pdf|doc|docx'; 
$config_sinopsis['file_name'] = $nmsinopsis;

Disini kita definisikan overwrite = false, yang fungsinya ketika ada 2 jenis input upload yang ada di satu form, tidak hanya 1 input yang akan di proses.
Dalam kasus ini apabila tidak didefinisikan overwrite = false, ketika kita memanggil data yang telah diupload menggunakan fungsi

$sinopsis=$this->upload->data();
$gbr = $this->upload->data();;

maka hanya 1 data yang diambil, yaitu yang terakhir di proses. Dengan arti kata lain hanya data Gambar yang akan ditambilkan.

bagikan postingan ini...Share on email
Email
Share on facebook
Facebook
Share on google
Google
Share on twitter
Twitter
Share on linkedin
Linkedin

Leave a Reply

Your email address will not be published. Required fields are marked *

6 + 1 =