Thursday, April 29, 2010

PHP Upload File

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 mendekti upload file yang sama
4. Menambahkan fitur filter untuk upload jenis file tertentu

Membuat form untuk upload file
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Upload script</title>
</head>

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

Screenshoot Tampilan :

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">
Lupa menulis atau menambahkan parameter enctype akan menyebabkan file tidak
akan dapat di upload, hal ini seringkali melanda bagi programmer yang baru belajar
PHP, semoga adanya pengingatan ini dapat mengurangi kesalahan ketika coding.

Membuat script upload (upload.php)

Perhatikan baris kode berikut :

<form action="upload.php" method="post" enctype="multipart/form-data"
name="form1">
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.
(upload.php)
<html>
<head>
<title>Upload script</title>
</head>

<body>
<p>
<?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/>";
?>

</p>
</body>
</html>
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 buat

folder “files”, maka disarankan buat terlebih dahulu, tidak ada peraturan khusus dalam
penamaan folder.

Dibawah adalah pesan yang ditampilkan ketika upload berhasil.


Menambahkan fitur file_exists untuk mendekti upload file yang sama

Bagaimana ? sampai sini sudah paham mengenai konsep upload ?, jika belum jangan
sungkan tuk bertanya via YM atau email.

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 lama akan ditiban dengan file yang baru, ada beberapa mekanisme 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.
(upload.php)
<html>
<head>
<title>Upload script</title>
</head>

<body>
<p>

<?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";

//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 {
//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/>";
}
?>
</p>
</body>
</html>
Perhatikan baris berikut

//Mengecek apakah file yang di upload sudah ada atau belum
if( file_exists ($direktori)) {
Function file_exists() berfungsi untuk mengecek nama file pada direktori tempat
penyimpanan upload file berada, jika ada maka fungsi if akan dijalankan dan
memunculkan pesan.
Menambahkan fitur filter untuk upload jenis file tertentu


Kretifitas ! , ya - adalah hal wajib yang dimiliki oleh programmer, pada beberapa kasus
tertentu kita diharuskan untuk membuat sebuah aplikasi upload file yang hanya
menangani file tertentu, dalam contoh ini kita akan menambahkan fitur filter untuk
medeteksi file yang di upload, jika file yang di upload tidak sesuai yang diinginkan oleh
sistem maka upload di tolak, itu secara 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 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 {
Kode fullnya sebagai berikut :
<html>
<head>
<title>Upload script</title>
</head>

<body>
<p>

<?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";

//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>";

exit();

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 {

//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/>";
}
?>
</p>
</body>
</html>
Semoga Bermanfaat.

1 comment:

  1. Jika file yg di upload ukurannya melebihi yang ditetapkan proses upload di tolak. Bgmana scripnya ?

    ReplyDelete