Membuat Upload File di PHP dengan Validasi [Simple Script]

Halo, kali ini saya akan membagikan script sederhana bagaimana cara membuat upload file di PHP dengan validasi.

Salah satu hal terpenting ketika mempelajari PHP adalah mengenai upload file dan berbagai macam mekanismenya, dalam tutorial dibawah kita akan belajar :

  1. Membuat form untuk upload file
  2. Membuat script upload sederhana
  3. Menambahkan fitur file_exists untuk mendeteksi upload file yang sama
  4. Menambahkan fitur filter untuk upload jenis file tertentu

Membuat form untuk upload file

Buat file html baru dengan nama form_upload.html

(form_upload.html)

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
	<title>Script Upload PHP</title> 
</head> 
<body>

<form action="upload.php" method="post" enctype="multipart/form-data" name="form1">
<h3>Upload file :</h3>  <label><input type="file" name="fupload" required /></label>
<p><label><input type="submit" name="upload" value="Upload"/></label></p>
</form>

</body>
</html>
Screenshot tampilan form_upload.html

Hal yang harus diperhatikan ketika membuat form untuk upload file ada pada baris :

<form action="upload.php" method="post" enctype="multipart/form-data" name="form1">

Jika lupa menulis atau menambahkan parameter enctype akan menyebabkan file tidak akan dapat di upload, hal ini seringkali terjadi bagi programmer yang baru belajar PHP.

Setelah berhasil membuat file form_upload.html maka langkah selanjutnya adalah membuat file upload.php, nama file ini bebas, yang penting adalah samakan nama script yang akan kita buat nanti dengan nama yang ada di parameter action.

Membuat script upload

Buat file html baru dengan nama upload.php

(upload.php)

<?php
//Membaca nama file
$file_name = $_FILES['fupload']['name'];
//Membaca ukuran file
$size = $_FILES['fupload']['size'];
//Membaca jenis file
$file_type = $_FILES['fupload']['type'];
//Source tempat upload file sementara
$source = $_FILES['fupload']['tmp_name'];
//Tempat upload file disimpan
$direktori = "files/$file_name";

//Memindahkan upload file dari direktori sementara ke tempat permanen
move_uploaded_file($source,$direktori);

//Menampilkan keterangan file
echo "<strong>Direktori sementara :</strong> ".$source."<br/>"; 
echo "<strong>Folder :</strong> ".$direktori."<br/>"; 
echo "<strong>Filename :</strong>".$file_name."<br/>"; 
echo "<strong>Size : </strong>".$size." bytes <br/>"; 
echo "<strong>File type : </strong>".$file_type."<br/>"; 
echo "<strong>Filename :</strong>".$file_name."<br/>";

}

?>

Perhatikan baris kode berikut :

//Tempat upload file disimpan 
$direktori = "files/$file_name";

Script diatas adalah variable untuk menyimpan file yang akan di upload, jika belum membuat folder “files”, maka disarankan buat terlebih dahulu, tidak ada peraturan khusus dalam penamaan folder.

Dibawah adalah pesan yang ditampilkan ketika upload berhasil.

Screenshot tampulan upload.php saat berhasil mengupload file

Dan lihat di folder “files“, file berhasil tersimpan ke dalam folder tersebut.

Sampai pada tahap ini anda sudah bisa membuat upload file dengan PHP.

Lalu bagaimana membuat validasi untuk mendeteksi upload file yang sama dan cara agar jenis file tertentu yang bisa diupload? berikut caranya:

Menambahkan file_exists untuk mendeteksi upload file yang sama

Ok kita lanjutkan, dalam suatu aplikasi upload seringkali terjadi upload file dengan nama yang sama, padahal isinya berbeda, hal ini tentu saja tidak diinginkan karena file yang lebih dulu diupload akan ditimpa/direplace dengan file yang baru, ada beberapa cara yang bisa dipakai untuk menanganinya :

  1. Mengganti nama upload file, dengan cara menambahkan perpaduan angka dan huruf secara random.
  2. Memunculkan peringatan bahwa file yang diupload memiliki nama yang sama.

Pada tutorial ini kita akan memakai cara yang kedua.

Ubah script file upload.php menjadi seperti berikut:

<?php
//Membaca nama file
$file_name = $_FILES['fupload']['name'];
//Membaca ukuran file
$size = $_FILES['fupload']['size'];
//Membaca jenis file
$file_type = $_FILES['fupload']['type'];
//Source tempat upload file sementara
$source = $_FILES['fupload']['tmp_name'];
//Tempat upload file disimpan
$direktori = "files/$file_name";
//Memindahkan upload file dari direktori sementara ke tempat permanen

//Mengecek apakah file yang di upload sudah ada atau belum
if( file_exists ($direktori)) {
	echo "file <strong>$file_name</strong> sudah ada, upload dengan nama lain <br/> <a href='form_upload.html'>kembali</a>";
//Keluar program 
exit(); } 

else {

move_uploaded_file($source,$direktori);
//Menampilkan keterangan file
echo "<strong>Direktori sementara :</strong> ".$source."<br/>"; 
echo "<strong>Folder :</strong> ".$direktori."<br/>"; 
echo "<strong>Filename :</strong>".$file_name."<br/>"; 
echo "<strong>Size : </strong>".$size." bytes <br/>"; 
echo "<strong>File type : </strong>".$file_type."<br/>"; 
echo "<strong>Filename :</strong>".$file_name."<br/>";

}

?>

Perhatikan baris script berikut:

//Mengecek apakah file yang di upload sudah ada atau belum
if( file_exists ($direktori)) {
echo "file <strong>$file_name</strong> sudah ada, upload dengan nama lain <a href="form_upload.html">kembali</a>";

Function file_exists() berfungsi untuk mengecek nama file pada direktori tempat penyimpanan upload file, jika nama file sudah ada maka fungsi if akan dijalankan dan memunculkan pesan seperti gambar berikut:

Menambahkan filter untuk upload jenis file tertentu

Kretifitas ! ya – adalah hal wajib yang dimiliki oleh seorang programmer, pada beberapa kasus tertentu kita diharuskan untuk membuat sebuah aplikasi upload file yang hanya menangani file tertentu, dalam contoh ini kita akan menambahkan filter untuk mnedeteksi file yang di upload, jika file yang di upload tidak sesuai yang diinginkan oleh sistem maka upload akan ditolak, itu konsepnya.

Dari segi script, menambahkan filter ini cukup mudah, yaitu dengan menggunakan function if, fungsi if mendeteksi apakah file yang di upload sesuai yang diinginkan atau tidak, cukup menambahkan script file upload.php menjadi seperti berikut:

<?php
//Membaca nama file
$file_name = $_FILES['fupload']['name'];
//Membaca ukuran file
$size = $_FILES['fupload']['size'];
//Membaca jenis file
$file_type = $_FILES['fupload']['type'];
//Source tempat upload file sementara
$source = $_FILES['fupload']['tmp_name'];
//Tempat upload file disimpan
$direktori = "files/$file_name";
//Memindahkan upload file dari direktori sementara ke tempat permanen

//Mengecek apakah file yang di upload sudah ada atau belum
if( file_exists ($direktori)) {
	echo "file <strong>$file_name</strong> sudah ada, upload dengan nama lain <br/> <a href='form_upload.html'>kembali</a>";
//Keluar program 
exit(); } 

elseif ($file_type != "image/gif" && $file_type != "image/jpg" && $file_type != "image/jpeg" && $file_type != "image/png") { 
	echo "file <strong>$file_name</strong> tidak di support, hanya untuk upload gambar (gif, jpg,jpef,png) <br/> 
	<a href='form_upload.html'>kembali</a>";
} 

else {

move_uploaded_file($source,$direktori);
//Menampilkan keterangan file
echo "<strong>Direktori sementara :</strong> ".$source."<br/>"; 
echo "<strong>Folder :</strong> ".$direktori."<br/>"; 
echo "<strong>Filename :</strong>".$file_name."<br/>"; 
echo "<strong>Size : </strong>".$size." bytes <br/>"; 
echo "<strong>File type : </strong>".$file_type."<br/>"; 
echo "<strong>Filename :</strong>".$file_name."<br/>";

}

?>

Perhatikan baris script berikut:

} elseif ($file_type != "image/gif" && $file_type != "image/jpg" && $file_type != "image/jpeg" && $file_type != "image/png") {
echo $file_type."<br/>";
echo "file <strong>$file_name</strong> tidak di support, hanya untuk upload gambar (gif, jpg,jpef,png)";
} else {

Script diatas berfungsi untuk mendeteksi tipe file yang akan diupload, jika file bukan tipe gambar gif, atau jpg, atau jpeg, atau png maka file tidak akan terupload dan memunculkan pesan seperti gambar berikut:

Demikian tutorial sederhana membuat “Upload File di PHP dengan Validasi”, jika ada kekurangan dan kesalahan silahkan tulisakan kritik dan sarannya di kolom komentar 🙂

Semoga bermanfaat.

Indra Fadhilah
Founder & author di webgrafis.com. Menyukai pemrograman & desain grafis. Selalu ingin belajar hal baru tentang teknologi.