12 Komentar

Form upload sederhana dengan PHP

Setelah sekian lama tidak menulis, saya coba angkat materi yang ringan, upload file dengan PHP. Disini akan saya berikan dua pilihan kode versi simple dan plus debuging. Bagi yang ingin langsung menggunakan kode upload tanpa ingin tahu proses lebih dalam cukup amati yang versi simple-nya, namun buat yang tertarik lebih dalam dalam proses upload file bisa pelajari dari plus debuging.

upload directory

Folder upload


Simple version :

<?php
if( isset($_REQUEST['submit']) ){
 $uploaddir = 'C:\xampp\htdocs\upload\\';
 $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
 echo "File-nya valid, dan berhasil di unggah. cek file\n";
 } else {
 echo "Kemungkinan hacking!\n";
 }
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" /> <!-- dalam byte = 2Mb -->
<input type="file" name="userfile" size="40" />
<input type="submit" name="submit" /></form>
Upload form

form unggah plus debuger

Plus debugging :

<?php
if( isset($_REQUEST['submit']) ){
 $uploaddir = 'C:\xampp\htdocs\upload\\';
 $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
 echo "File-nya valid, dan berhasil di unggah. cek file\n";
 } else {
 echo "Kemungkinan hacking!\n";
 }
}

/*
* Debug variabel $_REQUEST dan $_FILES
* Penjelasan tentang nilai error pada $_FILES["userfile"]["error"]
*/
echo '<pre>';
echo 'Debug var $_REQUEST: ';
var_dump($_POST);
echo '<strong>Debug var $_FILES:</strong> ';
var_dump($_FILES);
if( $_FILES['userfile']['error'] ){
	echo 'ERROR!: ';
	switch($_FILES['userfile']['error']){
		case 1:
			echo 'Besar file melebihi yang diperbolehkan oleh server (lihat php.ini)';
			break;
		case 2:
			echo 'Besar file melebihi MAX_FILE_SIZE yang tertulis di form';
			break;
	}//end switch
	echo '';
}//end if
echo '</pre>';
/*
* end of debug
*/
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" /> <!-- dalam byte = 2Mb -->
<input type="file" name="userfile" size="40" />
<input type="submit" name="submit" /></form>
upload form submitted

form unggah plus debugger (submited)

Yang pertama harus diperhatikan dari kedua versi kode tersebut adalah variabel $uploaddir, nilainya harus sesuai dengan direktori tempat folder upload. Folder ini akan digunakan untuk menyimpan file yang berhasil di unggah. Kedua, dalam penulisan form jangan lupa untuk menambahkan encyte="multipart/form-data"parameter ini berfungsi untuk menginformasikan kepada server bahwa form ini akan mengirimkan/mengunggah file.

<form action="<?php echo $_SERVER['PHP_SELF'];?><br />" method="post" enctype="multipart/form-data">

Ketiga, tambahkan input dengan type=hidden dan isi name-nya dengan MAX_FILE_SIZE value-nya menandakan batasan terbesar file yang bisa di-unggah ukurannya dalam byte. Jadi 2000000 di atas menandakan bahwa besar file yang dapat diupload adalah 2 Megabyte.

<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />

Apa yang terjadi jika file yang diupload lebih besar dari MAX_FILE_SIZE? komputer anda akan meledak. he.he.he. becanda guys😉 PHP akan mengembalikan nilai error=2 dengan kata lain file akan ditolak oleh server karena melebihi MAX_FILE_SIZE.

Terakhir, jangan lupa kode yang bertanggung jawab menyimpan file yang telah di-unggah. Tugas dari fungsi move_uploaded_file() adalah memindahkan file yang di-unggah dan disimpan di temporary folder server ke folder upload yang telah kita siapkan.

Logika Upload

Upload flow logic

Ketika form di-submit file yang di-unggah akan disimpan di temporary folder dahulu dengan temporary name juga, lalu jika diperlukan dapat dilakukan validasi dan jika sudah siap maka di pindahkan ke folder yang sebenarnya dan jika diperlukan akan dilakukan rename lagi ke nama aslinya atau nama yang sesuai dengan keperluan sistem.

Debugger

Informasi yang disajikan oleh versi plus debuging adalah variabel yang dikirimkan dan tambahan informasi error. Dalam variabel $_FILES terdapat index error yang kemungkinan isinya adalah 0, 1, dan 2.

  • nol (0) jika tidak ada error
  • 1 jika file yang dikirim lebih besar dari nilai yang diperbolehkan oleh PHP, informasi ini ada di php.ini
  • 2 jika file yang dikirim lebih besar dari MAX_FILE_SIZE yang tercantum pada form

Semoga bermanfaat happy coding😉

Lihat juga Galeri foto sederhana dengan PHP

12 comments on “Form upload sederhana dengan PHP

  1. Mas admin
    Mau nanya nih…kalo membuat form pendaftaran dilengkapi upload foto gimana yah ?
    Semacam pendaftaran yg meminta kita mengaupload foto gitu

    Mohon bantuan nya….

  2. Untuk menambah tujuan direktori upload gimana ya mas?
    Jadi foldernya tujuan lebih dari 1?
    mohon bantuannya!terimakasih…

  3. hi kk.. gimana cara kasi codingan captcha biar ga kena spam yah? maklum masi newbie. ^_^

  4. bisa ga di gabuang sama form input
    cz aku mau form input aq klo di tampilin bisa ngedownload file yg kita upload td…

    please…

  5. mau tanya nih..

    gimana ya cara input data contohnya data guru beserta foto nya ??

    terima kasih

  6. Ketika form di-submit file yang di-unggah akan disimpan di temporary folder dahulu dengan temporary name juga, lalu jika diperlukan dapat dilakukan validasi dan jika sudah siap maka di pindahkan ke folder yang sebenarnya dan jika diperlukan akan dilakukan rename lagi ke nama aslinya atau nama yang sesuai dengan keperluan sistem

    bilamana terjadi ketika UpLoad Data sudah mencapai 100% kemudian keluar komentar “GAGAL UPLOAD” ? logikanya setelah 100% file tinggal disimpan secara fisik … Terimakasih

    • Sebenarnya ada banyak kemngkinan, kita harus tau logika programming yang digunakan, apalagi jika menggunakan ajax. Ini salah satu dari banyak kemungkinan: Komunikasi http:// ke webserver bersifat reliable artinya selalu ada acknowledgement atau bahasa sederhananya balasan bahwa pesan diterima baik dari server maupun client. Jadi meskipun file berhasil menunjukan 100%, setelah itu masih ada komunikasi antara client dan server yang harus diselesaikan, jika setelah 100% ternyata gagal upload bisa jadi proses pasca upload terputus/terganggu sehingga filenya dinyatakan gagal dan harus diulang kembali.

  7. ini gada file mentahanya gan yg udah dizip..? coz petunjuk diatau ga lengkap.. banyak newbi yg ga paham pasti petunjuk diatas.ga ada save dengan nama apa.. trus difolder apa.kan itu penting bgt gan.. salah nama file+folder file ga berfungsi skripnya

Menurut anda bacaan ini bermanfaat? Ada tambahan? Atau mungkin mencari jawaban lain? Tulis disini Ok (:

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

%d blogger menyukai ini: