UPLOAD FILE KE SERVER DENGAN MENGGUNAKAN PHP.
UPLOAD FILE KE SERVER DENGAN MENGGUNAKAN PHP.
Kali ini saya akan membahas tentang upload
file menggunakan PHP. Tentu menyenangkan jika pengguna website anda
dapat melakukan upload gambar, dokumen atau video kedalam website anda.
Artikel ini akan menerangkan cara mengupload file keserver anda dengan
PHP.
PHP membuat semuanya menjadi lebih
mudah dalam menangani upload file. Untuk membuat form upload pastikan
kita menyertakan atribut
enctype="multipart/form-data"
dan pastikan methodnya adlaha post
. Oke langsung saja kita lihat kode HTML berikut ini: <form method="post" action="<?=$PHP_SELF?>" enctype="multipart/form-data"> <input type="file" name="myfile"> <input type="submit" name="Submit" value="Submit"> </form>
Seperti
yang kita lihat, kita me,mberi nama pada field upload kita "myfile".
Nama ini sangat penting, karena ketika file telah diupload maka file
tersebut otomatis diberi nama yang unik dan disimpan di temporary
direktori. Tentu saja url path ke filenya bisa diakses, karena otomatis
akan muncul variabel global yang memiliki nama yang sama dengan field
upload kita, dalam hal ini
myfile
. Akan ada 4 variabel baru yang semuanya diawali dengan myfile
dan diikuti dengan garis bawah (underscore), yaitu: - $myfile. Variabel ini berisi informasi lokasi file di server.
- $myfile_name. Nama file asli ketika masih dikomputer klien.
- $myfile_size. Ukuran dari file (dalam satuan bytes).
- $myfile_type. Tipe file.
Upload sederhana
Langsung saja kita coba contoh upload berikut ini, simpan dengan nama upload.php:
<html> <head> <title>Upload file</title> </head> <body> <? if ( isset( $upload ) ) { echo "Lokasi File: $myfile<br>"; echo "Nama File: $myfile_name<br>"; echo "Ukuran: $myfile_size bytes<br>"; echo "Tipe File: $myfile_type<br>"; copy ( $myfile, "$myfile_name") or die ("Gagal mengupload"); } ?> <form enctype="multipart/form-data" action="<?=$PHP_SELF?>" method="post"> <input type="file" name="myfile"><br> <input type="submit" value="upload" name="upload"> </form> </body> </html>
Ketika tombol upload ditekan, maka url path file tersebut akan disimpan di variabel
$myfile
dan kita tampilkan dibrowser. Kita juga menampilkan nama file yang tersimpan pada variabel $myfile_name
, ukuran file di variabel $myfile_size
dan tipe file di variabel $myfile_type
.
Kita menggunakan fungsi
copy()
untuk memindahkan file dari komputer kita direktori sementara di server kita. Fungsi copy()
membutuhkan dua argumen yaitu lokasi awal file dan lokasi baru
diserver. Jika kita ingin mengupload nya ke suatu folder diserver
(katakanlah kita simpan difolder images) maka kita perlu mengubahnya
menjadi: copy ( $myfile, "images/$myfile_name")
Upload yang lebih kompleks
Sekarang mari kita coba membuat fungsi upload yang jauh lebih rumit.
Misalkan kita ingin membuat fungsi upload dimana file yang diupload
harus file jpg, dan ukurannya tidak boleh lebih besar dari 100Kb serta
panjang dan lebar gambar tidak boleh lebih dari 100 piksel. Kelihatannya
rumit kan? Mari kita coba kode berikut dan simpan dengan nama
upload2.php:
<html> <head> <title>Upload file</title> </head> <body> <? if ( isset( $upload ) ) { echo "Lokasi File: $myfile<br>"; echo "Nama File: $myfile_name<br>"; echo "Ukuran: $myfile_size bytes<br>"; echo "Tipe File: $myfile_type<br>"; if ( $myfile_type == "image/pjpeg" ) { if ($myfile_size <= 102400 ) { list($width, $height) = @getimagesize("$myfile"); if ( $width <= 100 && $height <= 100 ) { copy ( $myfile, "$myfile_name") or die ("Couldn't copy"); echo "File anda telah sukses diupload"; } else { echo "Ukuran panjang dan lebar gambar terlalu besar"; } } else { echo "Ukuran file tidak boleh lebih dari 100Kb"; } } else { echo "File harus JPG!!"; } } ?> <form enctype="multipart/form-data" action="<?=$PHP_SELF?>" method="post"> <input type="file" name="myfile"><br> <input type="submit" value="upload" name="upload"> </form> </body> </html>
PHP tidak memiliki kemampuan untuk membuat progress bar ketika file
diupload. Karena PHP tidak dapat mengetahui berapa bagian yang telah
diupload dan berapa yang belum. Kita perlu menggunakan CGI. Tetapi entah
dengan PHP terbaru, siapa tau sudah memiliki class atau fungsi untuk
membuat progress bar.
Pertama-tama yang kita lakukan adalah mengecek apakah file kita jpg dengan cara mengecek
$myfile_type
. Jika hasil dari variabel $myfile_type
adalah "image/pjpeg", maka bisa dipastikan bahwa file kita adalah jpg.
Berikutnya kita melakukan pengecekan apakah ukuran filenya tidak lebih
besar dari 100Kb dengan mengecek variabel $myfile_size
. Ingat bahwa 100Kb = 102400Bytes(Rumusnya 1Kb=1024Bytes). Kemudian kita menggunakan fungsi getimagesize()
untuk menemukan panjang dan lebar dari gambar yang kita simpan dengan array menggunakan fungsi list()
.
Kemudian kita cek panjang dan lebar dari gambar apakah tidak lebih
dari 100 piksel. Jika semuanya terpenuhi maka filenya tinggal kita
copy. Cukup mudah kan? gampang... anda pasti bisa.
Ingat, berhati-hatilah dalam membuat upload file. Saringlah file yang
mau diupload, jika anda hanya menginginkan orang mengupload file jpg ya
anda harus cek apakah file yang diupload benar-benar file jpg.
Bagaimana jika nanti yang diupload malah virus? karena itu waspadalah,
waspadalah!!
Tidak ada komentar:
Posting Komentar