Menggunakan 2 Input Upload didalam 1 Form di Codeigniter
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.




