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

  1. Gambar di simpan dalam folder foto.
  2. nama file tersimpan di database dengan nama tabel foto.
  3. 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

  1. Buat tabel foto dan folder foto di webserver
  2. buat sckript koneksi
  3. buat form upload plus script validasi saat gagal upload
  4. buat script untuk memvalidasi, mengupload dan menyimpan kedatabase
  5. 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

Categories: PHP

Candra Adi Putra

Candra Adi Putra S.Kom adalah Alumni STMIK AKAKOM Yogyakarta. hubungi saya di candraadiputra (at) gmail (dot) com

16 Comments

3sd · 12 May , 2015 at 10:25 am

thanks you very much :)

- Ari · 8 March , 2015 at 3:28 pm

ke database mw tpi kok filenya ndk mw pindah ya :(

Fauji Rahman · 24 May , 2014 at 1:50 pm

Maaf Mas….
kalau hanya utk Menyimpan Multiple Gambar ke database My sql Gmn Mas dgn mengunakan PHP?
Terimakasih

Fauji Rahman · 24 May , 2014 at 1:05 pm

Maaf Mas….
kalau hanya utk Menyimpan Gambar ke database My sql Gmn Mas dgn mengunakan PHP?
Terimakasih

areza-scarlet · 29 May , 2013 at 1:14 pm

gan kalo misalnya kotak upload kosong pas disubmit kan bakal masuk kedatabase, nah kalo kosong gmana cara nya biar pake yang sebelumnya

    Candra Adi Putra · 11 June , 2013 at 1:43 pm

    pake IF, misal if(empty($file)
    //do update without update file name
    else{
    //do update with file name

    itu logikanya…

deni · 25 May , 2013 at 4:36 pm

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…denihidayat592@yahoo.com

    Candra Adi Putra · 11 June , 2013 at 1:44 pm

    berarti belajar PHP lagi…itu bukan masalah uploadnya, itu masalah if else aja di php kok

oong · 22 February , 2013 at 3:44 pm

Minta script nya buat java sih gan pengan belajar upload pake java .

cho · 11 January , 2013 at 12:09 am

gan bisa ajarin kalo mau update atau ganti fotonya donk?
tolong dibalas atau kirim via email saya gan chunchocho@gmail.com saya tunggu gan
terima kasih..

officialitoru · 26 December , 2012 at 3:19 am

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 = officialitoru@gmail.com

Terimakasih

http://itorushare.blogspot.com/

    officialitoru · 26 December , 2012 at 3:24 am

    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 = officialitoru@gmail.com

    Terimakasih

    http://itorushare.blogspot.com/

retno · 25 December , 2012 at 7:41 pm

kalau cuman mau upload terus di tampilin aja bagaimana? tanpa ada koneksi.

    Candra Adi Putra · 25 December , 2012 at 8:13 pm

    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();

Candra Adi Putra · 26 November , 2012 at 11:37 am

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 ?

ulfa · 26 November , 2012 at 9:24 am

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

Comments are closed.