Cara upload file di PHP

screenshoot

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

Author: Candra Adi Putra

Candra Adi Putra adalah Alumni STMIK AKAKOM Yogyakarta. Like Candralab Studio Di Facebook.

16 thoughts on “Cara upload file di PHP”

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

      itu logikanya…

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

  1. 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/

    1. 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/

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

  2. 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 ?

  3. 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

Tinggalin komentar dong!