Tutorial upload di PHP sebenarnya sudah cukup banyak di internet, namun sayangnya sebagian tutorial hanya membahas teknik dasar mengupload. Karena hal itulah kami akan mencoba membuat panduan singkat tentang cara upload file menggunakan PHP dengan beberapa hal terkait validasi file dan rename file.
Skenario
Sebuah website ingin menambahkan fitur upload gambar . Saat user mengupload gambar, maka gambar yang sukses langsung akan ditampilkan di gallery sederhana dibawah form upload tersebut.
Permintaan untuk sistem adalah sebagai berikut
- Gambar di simpan dalam folder foto.
- nama file tersimpan di database dengan nama tabel foto.
- file harus divalidasi dengan pengecekan file tidak boleh kosong, file yang diupload hanya file gambar, ukuran maximal file 50kb, jika
nama file mengandung spasi, maka spasi harus diganti dengan undersore (misal ‘foto keren.png’menjadi ‘foto_keren.png’)/li>
Perancangan
- Buat tabel foto dan folder foto di webserver
- buat sckript koneksi
- buat form upload plus script validasi saat gagal upload
- buat script untuk memvalidasi, mengupload dan menyimpan kedatabase
- tampilkan hasil upload
Implementasi
Buat tabel foto
CREATE TABLE IF NOT EXISTS `foto` ( `id_foto` int(11) NOT NULL AUTO_INCREMENT, `nama_file` varchar(45) DEFAULT NULL, PRIMARY KEY (`id_foto`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
Buat skrip koneksi database(koneksi.php)
<?php define('db_host','localhost'); define('db_user','root'); define('db_pass',''); define('db_name','candralabdb');//namadb mysql_connect(db_host,db_user,db_pass); mysql_select_db(db_name); ?>
Buat skrip form upload (koneksi.php)
<div style="background-color:#ffe597; width: 300px;height: 100px"> <form method="POST" id="form1" enctype="multipart/form-data" action="foto_action.php"> <legend> Upload foto </legend> <input type="file" name='nama_file'> <button type="submit"> Upload </button> </form> </div> <?php // KODE UNTUK MENAMPILKAN PESAN STATUS if(isset($_GET['status'])) { $status=$_GET['status']; switch($status) { case 0 : echo " upload sukses!"; break; case 1 : echo " Anda belum memilih file yang akan diupload!"; break; case 2 : echo " Format yang diperbolehkan hanya jpg,png dan gif!"; break; case 3 : echo " upload gagal, Ukuran file terlalu besar!"; break; case 4 : echo " Gagal menyimpan kedatabase!"; break; } } ?> <?php //include file foto_view.php include('foto_view.php'); ?>
Buat skrip validasi dan upload (foto_action.php)
<?php //status upload /* status 0: Sukses * status 1: file yang diupload kosong * status 2: file bukan file gambar * status 3: ukuran file terlalu besar * status 4: Gagal menyimpan ke database */ include ('koneksi.php'); $nama_file = $_POST['nama_file']; //kode upload $lokasi_file = $_FILES['nama_file']['tmp_name']; $nama_file = $_FILES['nama_file']['name']; $tipe_file = $_FILES['nama_file']['type']; $ukuran_file = $_FILES['nama_file']['size']; //kode untuk mengganti spasi menjadi garis bawah pada nama file $nama_baru = preg_replace("/\s+/", "_", $nama_file); $direktori = "foto/$nama_baru"; $MAX_FILE_SIZE = 50000; //50kb //cek apakah file kosong? if(strlen($nama_file)<1){ header("Location:foto_form.php?status=1"); exit(); } //cek apakah format file adalah format gambar $formatgambar = array("image/jpg", "image/jpeg", "image/gif", "image/png"); if(!in_array($tipe_file, $formatgambar)) { header("Location:foto_form.php?status=2"); exit(); } //cek apakah ukuran file diatas 50kb if($ukuran_file > $MAX_FILE_SIZE) { header("Location:foto_form.php?status=3"); exit(); } //code untuk mengkopi file ke fodler foto move_uploaded_file($lokasi_file, $direktori); $sql = "INSERT INTO foto(nama_file) VALUES('$nama_baru')"; //masukan nama file kedalam tabel foto di database mysql $result = mysql_query($sql) or die(mysql_error()); //check if query successful if($result==true) { header('location:foto_form.php?status=0'); } else { header('location:foto_form.php?status=4'); } mysql_close(); ?>
Buat skrip menampilkan foto
<h2> File hasil upload foto</h2> <?php require_once ('koneksi.php'); $query="SELECT * from foto "; $result=mysql_query($query) or die(mysql_error()); $no=1; //proses menampilkan data while($rows=mysql_fetch_object($result)){ ?> <img src='foto/<?=$rows -> nama_file;?>' width='150' height='150' alt="" /> <?php } ?>
Download source code
silahkan download source code lengkapnya disini
thanks you very much :)
ke database mw tpi kok filenya ndk mw pindah ya :(
Maaf Mas….
kalau hanya utk Menyimpan Multiple Gambar ke database My sql Gmn Mas dgn mengunakan PHP?
Terimakasih
Maaf Mas….
kalau hanya utk Menyimpan Gambar ke database My sql Gmn Mas dgn mengunakan PHP?
Terimakasih
gan kalo misalnya kotak upload kosong pas disubmit kan bakal masuk kedatabase, nah kalo kosong gmana cara nya biar pake yang sebelumnya
pake IF, misal if(empty($file)
//do update without update file name
else{
//do update with file name
itu logikanya…
min tolong ajarin cara update file foto dong…aq inputnya bisa tapi untuk ganti fotonya gagal terus slalu ilang fotonya klw di update….tolong ya…makasih sebelumnya
dibalas ke sini ya…[email protected]
berarti belajar PHP lagi…itu bukan masalah uploadnya, itu masalah if else aja di php kok
Minta script nya buat java sih gan pengan belajar upload pake java .
gan bisa ajarin kalo mau update atau ganti fotonya donk?
tolong dibalas atau kirim via email saya gan [email protected] saya tunggu gan
terima kasih..
Kalo field di table databasenya bukan cuma foto bertipe VARCHAR gimana gan ?
Misal ada field : nim,nama,jurusan,semester,foto
otomatis kan ntar bakal script simpan untuk field : nim,nama,jurusan,semester = dibikin sendiri (simpandata.php)
trus bikin script simpan/upload atau buat validasi dkk buat field: foto = dibikin lagi (simpanfoto.php)
Trus gabungin tuh 2 script menjadi 1 gimana gan?
Soalnya kan ntar bakal di taruh di
Nah tuh gimana gan?
Soalnya kemaren aku muter2 disitu pas mw bikin script simpan foto :D
Tolong dibls disini atau via email aku ya gan = [email protected]
Terimakasih
http://itorushare.blogspot.com/
Sorry gan yg d atas ada yg kurang, ini potongan lengkapnya
——————————————————————————-
Trus gabungin tuh 2 script menjadi 1 gimana gan?
Soalnya kan ntar bakal di taruh di
/////// </ ///////
Nah tuh gimana gan?
Soalnya kemaren aku muter2 disitu pas mw bikin script simpan foto :D
Tolong dibls disini atau via email aku ya gan = [email protected]
Terimakasih
http://itorushare.blogspot.com/
kalau cuman mau upload terus di tampilin aja bagaimana? tanpa ada koneksi.
buang aja semua script yg berhubungan kedatabase…
$sql = “INSERT INTO foto(nama_file)
VALUES(‘$nama_baru’)”;
//masukan nama file kedalam tabel foto di database mysql
$result = mysql_query($sql) or die(mysql_error());
//check if query successful
if($result==true) {
header(‘location:foto_form.php?status=0’);
} else {
header(‘location:foto_form.php?status=4’);
}
mysql_close();
cukup ganti baris $nama_baru = preg_replace(“/\s+/”, “_”, $nama_file); dengan
$nama_baru=$_POST[‘nip’]. tentunya di form kamu juga harus ada input nip.. simple kan ?
min, kalau saya pengenya setelah di upload itu kan otomatis yang masuk di database nama file asli tuh ya… lha kalo saya pengennya nama file fotonya itu sesuai dengan no.induk pegawai secara otomatis dapat merename tu bagaimana caranya