Pada beberapa aplikasi web
seringkali kita diijinkan untuk melakukan upload file-file tertentu, misalnya
pada aplikasi email kita bisa mengupload file-file tertentu untuk dijadikan
lampiran atau attachment, atau aplikasi buku tamu yang mengijinkan kita untuk
mengupload foto kita (tentu saja foto yang berbentuk digital), atau
aplikasi-aplikasi yang lain lagi.
PHP
sebagai server side scripting yang canggih tentu saja tidak ketinggalan
menyediakan kemampuan untuk menangani upload file. Upload file ini haruslah
berasal dari browser yang memenuhi kriteria RFC-1867. Yang termasuk ke dalamnya
adalah Netscape Navigator versi 3 ke atas, Microsoft versi 3 dengan patch dari
Microsoft atau versi 4 ke atas.
Untuk
memeriksa apakah konfigurasi web server Anda disiapkan untuk dapat menerima
upload file, gunakan fungsi phpinfo() dan lihat di bagian PHP Core. Periksa
apakah nilai file_uploads = 1. Jika ya, maka web server tersebut siap untuk
menangani upload file dengan PHP. Setelah itu Anda juga dapat memeriksa
direktif upload_max_filesize, upload_tmp_dir, dan post_max_size.
Upload_max_filesize menentukan besar file maksimum yang dapat diupload.
Upload_tmp_dir menentukan direktori sementara untuk menyimpan file upload. Jika
tidak disebutkan, maka PHP akan menggunakan default sistem tersebut.
Post_max_size menentukan ukuran maksimal dari post data. Semua nilai tersebut
tersimpan dalam file php.ini. Gambar 1 memperlihatkan hasil yang diberikan oleh
phpinfo() di sistem yang PCplus gunakan.
Sekarang
kita rancang terlebih dahulu form yang akan kita gunakan untuk upload. Dalam
melakukan uji coba skrip ini, PCplus menggunakan sistem operasi RedHat 9. Skrip
HTML dari form tersebut kira-kira adalah sebagai berikut:
Simpanlah skrip ini dengan nama
formupload.html. Anda tidak perlu memberinya ekstensi .php karena toh file
tersebut tidak mengandung skrip PHP sama sekali. Jika skrip ini dijalankan,
hasilnya akan nampak seperti gambar 2.
Perhatikan
bahwa pada skrip tersebut terdapat variabel MAX_FILE_SIZE. Variabel ini
digunakan untuk membatasi ukuran maksimum file yang akan diupload dan variabel
ini harus dituliskan sebelum input file. Yang harus diingat adalah bahwa ukuran
variabel MAX_FILE_SIZE ini tidak boleh
melebihi direktif upload_max_filesize yang terdapat di php.ini. Nilai default
dari upload_max_filesize adalah 2 MB.
Di
skrip tersebut disebutkan bahwa file yang akan mengolah form ini adalah
upload.php. Nantinya pada file upload.php akan dikenal beberapa variabel
sebagai berikut:
- $_FILES['userfile']['name'], berisi nama file yang diupload
- $_FILES['userfile']['type'], berisi mime type dari file yang diupload.
- $_FILES['userfile']['size'], ukuran dari file yang diupload dalam byte.
- $_FILES['userfile']['tmp_name'], nama sementara dari file yang telah terupload ke server.
- $_FILES['userfile']['error'], error code yang berasosiasi dengan proses upload. Variabel ini baru ada di versi PHP 4.2.0.
Variabel global $_FILES
sendiri baru ada mulai PHP 4.1.0. Sebelumnya Anda harus menggunakan $HTTP_POST_FILES.
Nilai
error yang mungkin terjadi pada proses upload adalah sebagai berikut:
- UPLOAD_ERR_OK atau 0, tidak ada error, proses upload sukses.
- UPLOAD_ERR_INI_SIZE atau 1, file yang diupload melebihi ukuran yang ditentukan di php.ini.
- UPLOAD_ERR_FORM_SIZE atau 2, file yang diupload melibihi ukuran yang disebutkan oleh variabel MAX_FILE_SIZE.
- UPLOAD_ERR_PARTIAL atau 3, hanya sebagian dari file yang berhasil diupload.
- UPLOAD_ERR_NO_FILE atau 4, tidak ada file yang diupload.
Nah,
sekarang kita akan buat file upload.php yang akan menangani proses upload ini.
Skripnya adalah sebagai berikut:
Sebelum mencoba melakukan upload,
buatlah terlebih dahulu sebuah direktori bernama /upload. Setelah itu ubahlah
permission dari direktori tersebut agar dapat diakses oleh user. Anda bisa
gunakan perintah sebagai berikut:
# cdmod 777 /upload.
Sekarang
kita akan coba untuk melakukan upload file berdasarkan skrip yang telah kita
buat tadi. Pada file formupload.html, kliklah tombol browse. Anda akan diminta
untuk memilih file apa yang akan diupload (gambar 3). Pilihlah sembarang file,
asal ukurannya tidak melebihi 1 MB, setelah itu klik OK dan klik “Send File”.
Pada uji coba ini PCplus membuat sebuah file teks bernama test.txt dan file
itulah yang akan diupload.
Apabila
proses upload berhasil, maka browser akan memberikan tampilan seperti pada
gambar 4. Seandainya ada kegagalan, browser akan menampilkan pesan kesalahan
dari kegagalan tersebut.
Perhatikan
bahwa pada bagian akhir file upload.php terdapat skrip sebagai berikut:
$upload_filename =
"/upload/" . $_FILES['userfile']['name'];
copy($_FILES['userfile']['tmp_name'],
$upload_filename);
Guna
dari skrip tersebut adalah menyalin file upload dari file sementara ke
direktori /upload yang telah kita buat tadi dan nama dari file tersebut
dipertahankan sesuai dengan nama aslinya.
Tadi
disebutkan bahwa PCplus menggunakan RedHat dalam ujicoba upload file ini.
Bagaimana jika menggunakan Windows? PCplus juga menyempatkan diri untuk menguji
coba upload file ini dengan menggunakan Windows 98 dengan PWS sebagai web
server. Ternyata dengan skrip yang sama upload juga berhasil ditangani dengan
baik. Hanya saja penulisan folder /upload harus disesuaikan dengan “gaya”
penulisan folder di Windows, sehingga bagian skrip yang menyatakan folder
upload harus dituliskan sebagai berikut:
$upload_filename =
"c:\\upload\\" . $_FILES['userfile']['name'];
copy($_FILES['userfile']['tmp_name'],
$upload_filename);
Perhatikan
bahwa tanda backslash (\) harus ditulis dua kali karena backslash merupakan
escaped character. Escaped character adalah karakter yang hanya akan
ditampilkan apabila didahului dengan backslash.
OK,
sampai jumpa minggu depan.
0 comments:
Post a Comment
“Terima kasih sudah membaca blog saya, silahkan tinggalkan komentar”