Upload File dengan PHP

Aplikasi upload file pada di suatu website seperti CMS pasti sering digunakan. User dapat mengupload file baik berupa gambar, file word, atau apapun sesuai dengan kebutuhan. Analoginya adalah file yang ada di komputer user, dikirim (upload) ke tempat server dari website.

Untuk mengetahui dan sebagai informasi file-file apakah yang sudah ter-upload ke server, kita buat data informasinya dengan membuat table ‘upload_file’ dari database ‘pintar’. Berikut adalah schema table upload_file

create table upload_file(
  id_upload int(3) auto_increment primary key,
  nama_file varchar(255) not null,
  ukuran_file int(100) not null,
  deskripsi text 
  direktori varchar(255) not null
);

Setelah kita selesai membuat table informasi untuk file yang telah kita upload, sekarang kita buat 2 file aplikasi upload yaitu upload.php dan proses_upload.php yang disimpan dalam folder upload_file. Sebelumnya kita buat folder didalam folder upload_file untuk menyimpan file yang akan kita upload, sebut saja folder tersebut bernama files jadi tempat menyimpan file yang diupload ada di folder c:\wamp\www\upload_file\files. (saya menggunakan WAMPP)

berikut ini adalah scriptnya:

upload.php

<html>
<head>
 <title>Upload File</title>
</head>
<body>
<form enctype='multipart/form-data' method='POST' action='proses_upload.php'>
  <table border='0' align='center'>
	<tr>
	  <td>File yang diupload</td>
	  <td>:</td>
	  <td><input type='file' name='fupload'></td>
	</tr>
	<tr>
	  <td>Deskripsi File</td>
	  <td>:</td>
	  <td><textarea name='deskripsi' rows='8' cols='40'></textarea></td>
	</tr>
	<tr>
	  <td colspan='3' align='center'><input type='submit' value='upload'></td>
	</tr>
  </table>
</form>
</body>
</html>

proses_upload.php

<?php
  $lokasi_file = $_FILES['fupload']['tmp_name'];
  $nama_file = $_FILES['fupload']['name'];
  $ukuran_file = $_FILES['fupload']['size'];
  $direktori = "files/$nama_file";
  
  //apabila file berhasil diupload
  if (move_uploaded_file($lokasi_file,"$direktori")) {
    echo "Nama File : <b>$nama_file</b> sukses diupload<br>";
	echo "Ukuran File : <b>$ukuran_file</b> bytes";
	
	//masukan informasi ke dalam database
	mysql_connect("localhost","root","adi");
	mysql_select_db("pintar");
	$sql = "insert into upload_file(nama_file,ukuran_file,deskripsi,direktori) values ('$nama_file','$ukuran_file','$_POST[deskripsi]','$direktori')";
	mysql_query($sql);
  }else{
    echo "File gagal diupload.";
  }
?>

Jalankan file upload.php, lalu klik tombol Browse untuk mencari file yang akan diupload, isipula deskripsi filenya. Bila sudah klik tombol Upload.

Berikut ini penjelasan code-nya 🙂

<form enctype='multipart/form-data' method='POST' action='proses_upload.php'>

encytype adalah atribut dari form yang bekerja bagaimana data dari inputan di encode. Defaultnya ‘application/x-www-form-urlencoded ‘. lalu kanapa kita mesti menggunakan ‘multipart/form-data’ karena kita menggunakan input tipe ‘file’.

<td><input type='file' name='fupload'></td>

Lebih lengkap mengenai atribut enctype di form, silakan cari di google ;-).

Method mesti POST karena kita akan mengirim data ke server.

$_FILES

Variable $_FILES adalah variable dari PHP yang mendefinisikan file upload. $_FILES ini sudah ada sejak PHP versi 4.1.0. $_FILES ini hanya akan berjalan bila REGISTER GLOBAL ON.

$lokasi_file = $_FILES[‘fupload’][‘tmp_name’]

$_FILES[‘fupload’][‘tmp_name’] → $_FILES[‘nama_inputan’][‘tipe’]

nama_inputan sesuaikan dengan nama form inputan yang kita buat, pada file upload.php nama dari inputan form adalah ‘fupload’. Mengenai ‘tipe’, ada beberapa macam, berikut ini penjelasannya.

  • $_FILES[‘nama_inputan’][‘tmp_name’], adalah nama file temporary dari file yang akan di upload yang akan disimpan di server.
  • $_FILES[‘nama_inputan’][‘name’], adalah nama file original dari file yang ada di komputer user ( klien ).
  • $_FILES[‘nama_inputan’][‘size’], adalah ukuran dari file yang akan diupload.
  • $_FILES[‘nama_inputan’][‘type’], adalah tipe dari file yang akan diupload.
  • $_FILES[‘nama_inputan’][‘error’], adalah informasi kesalahan dari proses upload

$direktori = “files/$nama_file”;

Kita inisialisasi sebelumnya bahwa direktori atau folder untuk menyimpan file-file yang akan diupload di folder c:\wamp\www\upload_file\files. Karena bila tidak diinisialisasi maka akan masuk ke direktori default setinggan php.ini. Cara untuk melihatnya, buka php.ini, lalu CTRL+F, ketik upload_tmp_dir. Disitu akan diperlihatkan tempat default penyimpanan file upload. Jadi code itu untuk memindahkan default direktori ke direktori yang telah kita buat dalam server.

if (move_uploaded_file($lokasi_file,”$direktori”))

move_uploaded_file adalah fungsi bawaan PHP yang berguna untuk mengecek apakah $lokasi_file telah diupload ke $direktori. Fungsi ini bernilai true bila berhasil diupload dari alamat $lokasi_file ke $direktori. Dan akan bernilai false bila gagal diupload.

Selain menggunakan fungis move_uploaded_file, bisa juga menggunakan fungsi copy(file_sumber,file_tujuan).

Sampai sini sepertinya sudah jelas ya proses upload file dengan menggunakan PHP.

Moga berguna, mohon koreksi bila ada salah ketik

terusbelajar by adiputra

Referensi n tribute to Mas Lukmanul Hakim from his book.

Iklan

19 thoughts on “Upload File dengan PHP

  1. Ping-balik: Teknik Upload Gambar Dan Menampilkannya « Mari Terus Belajar Dan Berbagi

  2. Terima kasih atas Tutorial nya dan sangat menarik sekali.. mungkin untuk pembatasan Upload tingal di tambahin aja………. DAN YANG PERLU SAYA TANYAIN BAGAIMANA MENCEGAH MULTIPLE INPUT KE DATABASE SAAT DI REFRESH coba Mas proses_upload.php itu akan terjadi Input File berulang kali.. Mohon Pencerahan nya para Master.. kalau di redirect misala header(‘location:download.php’); yang
    echo “Nama File : $nama_file sukses diupload”;
    10 echo “Ukuran File : $ukuran_file bytes”; tidak akan kelihatan oleh uploader… kalau yang kedua yg sya lakukan Refresh Page ke awal Form awal echo””; nah itu akan ke refresh ke page upload.php dan kalau di Refresh browser juga sama akan kembali ke semula dan akan menginput data ke Database… Mohon Solusi nya mas smua nya…..

  3. @ iman :
    gak ngerti maksudnya apa…
    ngantuk..:D
    jadi klu di refress ngapload lagi gitu ???

    mungkin sederhananya,,tambahin field database dengan field berbentuk primary n unik,,jadi klu pas direfress ada data yg sama,,gak akan kesimpen tu…

    mungkin teman2 yg lain bisa tambahin solusi lain,,silahkan…:)

  4. Iya kalau di Freah ke Upload lagi, cara nya gimana mas tambahin “tambahin field database dengan field berbentuk primary n unik” masalah nya laen lagi neh.. kemaren saya coba di Ubuntu berjalan Normal cuma masalah nya cuma waktu refresh nya aja, sekarang saya coba di Window malah file nya ke upload begitu saya cek di Folde files nya ga ada file kosong….. di database pada kolum direktori hanya ke baca files/ sedangkan nama file nya ga ke baca….

  5. Terima kasih mas udah saya coba tuh…….Sip klu di Refresh ga akan multiple Upload lagi di tambahin Uniqe, satu lagi masalahnya belum file belum berpinda ke direktori tujuan upload… kalau di Ubuntu bisa di Window masih belum ….

  6. Ping-balik: Alamat Penting « Hendro Gunarto

Silahkan Komentar...

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s