Dengan PHP kita bisa mengupload file ke server. Sebelumnya perlu diketahui bahwa dalam dunia website tidak semua informasi berupa text tapi bisa juga berupa gambar, flash atau dokumen pdf. Untuk itu kita membutuhkan sarana untuk mengupload file ke server.
Sebetulnya kita bisa menggunakan aplikasi FTP client untuk menangani proses upload file ini namun dengan mengupload file menggunakan PHP kita bisa melakukan beberapa hal seperti manandai file dan mengaitkan file kedalam database. Selain itu mengupload file lewat FTP hanya boleh dilakukan oleh pemilik website, untuk pengguna bebas sebaiknya dibuatkan sarana upload file dengan PHP saja.
Untuk mengupload file ke server kita menggunakan form dengan input type file dan lalu membuat script PHP untuk menanganinya. Dalam proses upload file ke server kita bisa menggunakan beberapa atribut dari variabel super global $_FILES berikut ini:
- $_FILES[‘file’][‘name’] , berisi nama asli dari file yang diupload
- $_FILES[‘file’][‘tmp_name’] , berisi nama temporary file yang diupload pada server
- $_FILES[‘file’][‘size’] , berisi ukuran file asli (dalam byte)
- $_FILES[‘file’][‘type’] , berisi MIME type file yang diupload
Berikut ini langkah-langkah membuat sistem upload file ke server dengan PHP
1. Pastikan parameter file_uploads pada file php.ini sudah diaktifkan.
Caranya buka file php.ini lalu cari teks file_uploads kemudian isi dengan nilai On seperti contoh berikut ini :
file_uploads = On
2. Buat direktori untuk menampung file yang di upload.
Pastikan direktori atau folder tempat file upload tersebut sudah diset permission 777 (Untuk web server Linux).
Caranya dengan mengetik perintah berikut pada terminal :
sudo chmod -R 777 nama_direktori
3. Buat form dengan input type file untuk pengguna memilih file yang akan diupload.
Contoh script form upload file:
<form enctype="multipart/form-data" action="" method="POST">
Pilih file yang akan diupload:</br>
<input name="userfile" type="file" />
<input type="submit" name="enter" value="Upload" />
</form>
4. Sebaiknya lakukan urutan proses upload file sebagai berikut :
- Cek keberadaan file pada server, jika sudah ada maka proses upload dibatalkan.
- Buat batasan ukuran maksimal file yang diijinkan untuk diupload, jika melebihi batas maka proses upload dibatalkan.
- Batasi tipe file yang akan diupload demi keamanan, misal hanya file JPG, GIF dan PNG saja.
- Tampilkan status jika proses upload file berhasil atau gagal.
5. Berikut script PHP lengkap untuk menangani urutan proses upload file diatas :
<html>
<body>
<form enctype="multipart/form-data" action="" method="POST">
Pilih file yang akan diupload:</br>
<input name="userfile" type="file" /> <br />
<input type="submit" name="enter" value="Upload" />
</form>
<?php
if(isset($_POST["enter"]))
{
//ambil parameter-parameter file yang diupload:
//nama, nama temp, ukuran dan type
$file_name = $_FILES["userfile"]["name"];
$file_tmp_name = $_FILES["userfile"]["tmp_name"];
$file_size = $_FILES["userfile"]["size"];
$file_type = $_FILES["userfile"]["type"];
//definisikan variabel untuk menangani error saat upload
$err_upload=0;
//pada contoh berikut file akan dipload ke direktori image
$dir_upload = "image/";
//buat nama untuk file hasil upload
$file_upload = $dir_upload . basename($file_name);
//cek keberadaan file hasil upload di server
if(file_exists($file_upload))
{
echo "Maaf, File yang sama sudah ada pada server <br />";
$err_upload=1;
}
//buat batasan maksimal ukuran file yang boleh diupload (dalam byte)
$max_size_upload=1000000;
//cek apakah ukuran file yang diupload melebihi batas
if($file_size > $max_size_upload)
{
echo "Maaf, Ukuran file yang diupload melebihi ".$max_size_upload." byte <br />";
$err_upload=1;
}
//cek hanya type JPG, GIF dan PNG saja yang diijinkan
if(($file_type!="image/jpeg") && ($file_type!="image/gif") && ($file_type!="image/png"))
{
echo "Maaf, Hanya file JPG , GIF dan PNG saja yang diperbolehkan <br />";
$err_upload=1;
}
//tampilkan error jika terjadi kesalahan
if($err_upload)
{
echo "Ada Error, proses upload file batal";
}
//proses upload file jika semua benar
else
{
if(move_uploaded_file($file_tmp_name,$file_upload))
{
echo "Proses upload berhasil";
}
else
{
echo "Proses upload gagal";
}
}
}
?>
</body>
</html>
6. Dan berikut tampilan proses upload file dengan php pada browser
Demikian cara dasar untuk upload file ke server dengan PHP. Sebetulnya ada beberapa hal lain yang bisa dilakukan seperti mengecek type file dengan fungsi finfo(), bukan dari ekstensinya lalu mengubah nama file yang diupload agar lebih rapi dan aman. Untuk hal-hal tadi insyaAllah akan ditulis pada artikel selanjutnya.
Referensi :
- //php.net/manual/en/features.file-upload.post-method.php
- //www.w3schools.com/php/php_file_upload.asp