ads

Iklan

Menangani Upload File Dengan PHP

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.
SHARE

Milan Tomic

Hi. I’m Designer of Blog Magic. I’m CEO/Founder of ThemeXpose. I’m Creative Art Director, Web Designer, UI/UX Designer, Interaction Designer, Industrial Designer, Web Developer, Business Enthusiast, StartUp Enthusiast, Speaker, Writer and Photographer. Inspired to make things looks better.

  • Image
  • Image
  • Image
  • Image
  • Image
    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment

“Terima kasih sudah membaca blog saya, silahkan tinggalkan komentar”