CandraLab

IT Pro & Developer Resource

Menu Close

Cara upload file di PHP

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