Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

Cara Mengunggah Berkas di PHP (Dengan Contoh)

by
Difficulty:BeginnerLength:MediumLanguages:

Indonesian (Bahasa Indonesia) translation by Febri Ardian Sanjoyo (you can also view the original English article)

Dalam artikel ini, saya akan menjelaskan basic upload file dalam PHP. Pertama, kita akan membahas opsi konfigurasi PHP yang harus ada untuk pengunggahan file yang sukses. Setelah itu, kita akan mengembangkan contoh dunia nyata tentang cara upload file.

Konfigurasikan Pengaturan PHP

Ada beberapa pengaturan konfigurasi PHP yang Anda ingin periksa terlebih dahulu untuk pengunggahan file yang sukses. Di bagian ini, kita akan membahas setiap opsi yang penting terkait pengunggahan file PHP. Opsi-opsi ini dapat dikonfigurasi dalam file php.ini.

Jika Anda tidak yakin di mana menemukan file php.ini Anda, Anda dapat menggunakan php_ini_loaded_file() untuk menemukannya. Cukup buat file PHP di server Anda dengan baris berikut, dan buka dari browser.

Berikut adalah kutipan dari file setup dengan beberapa default yang berguna.

Pengaturan kunci

file_uploads

Value dari file_uploads directive harus disetel ke On untuk memungkinkan pengunggahan file. Nilai default dari direktif ini adalah On.

upload_max_filesize

Upload_max_filesize direktive memungkinkan Anda untuk mengkonfigurasi ukuran maksimum yang diupload. Secara default, ini diatur ke 2M (dua megabyte), dan Anda dapat mengganti pengaturan ini menggunakan file .htaccess juga. Dua megabyte tidak terlalu banyak menurut standar sekarang, jadi Anda mungkin harus meningkatkan ini. Jika Anda mendapatkan kesalahan bahwa file melebihi upload_max_filesize ketika Anda mencoba mengunggah file, Anda perlu meningkatkan nilai ini. Jika Anda melakukannya, pastikan juga untuk meningkatkan post_max_size (lihat di bawah).

upload_tmp_dir

Menetapkan direktori sementara yang akan digunakan untuk menyimpan file yang diunggah. Dalam banyak kasus, Anda tidak perlu khawatir tentang pengaturan ini. Jika Anda tidak mengaturnya, sistem default temp directory akan digunakan.

post_max_size

Direktif post_max_size memungkinkan Anda untuk mengkonfigurasi ukuran maksimum data POST. Karena file diunggah dengan permintaan POST, nilai ini harus lebih besar dari yang Anda tetapkan untuk perintah upload_max_filesize. Misalnya, jika upload_max_filesize Anda 16M (16 megabyte), Anda mungkin ingin menetapkan post_max_size menjadi 20M.

max_file_uploads

Ini memungkinkan Anda untuk mengatur jumlah maksimum file yang dapat diunggah pada suatu waktu. Standarnya adalah 20, jumlah yang masuk akal.

max_input_time

Ini adalah jumlah maksimum second script diizinkan untuk mengurai input data. Anda harus menetapkannya ke value yang wajar jika Anda berurusan dengan upload file besar. 60 (60 detik) adalah nilai yang bagus untuk sebagian besar aplikasi.

memory_limit

Directivf memory_limit menunjukkan jumlah maksimum memori yang dapat dikonsumsi script. Jika Anda menghadapi masalah saat mengunggah file besar, Anda harus memastikan bahwa nilai dari direktif ini lebih besar dari yang Anda tetapkan untuk direktif post_max_size. Nilai default adalah 128M (128 megabyte), jadi kecuali Anda memiliki post_max_size yang sangat besar dan upload_max_filesize, Anda tidak perlu khawatir tentang hal ini.

max_execution_time

Jumlah maksimum detik script diizinkan untuk dijalankan. Jika Anda menghadapi masalah saat mengunggah file besar, Anda dapat mempertimbangkan untuk meningkatkan nilai ini. 30 (30 detik) seharusnya berfungsi dengan baik untuk sebagian besar aplikasi.

Sekarang mari kita membangun contoh nyata untuk mendemonstrasikan pengunggahan file dalam PHP.

Membuat Form HTML

Setelah Anda mengonfigurasi pengaturan PHP, Anda siap untuk mencoba kemampuan mengunggah file PHP.

Repositori GitHub kami memiliki beberapa kode contoh yang akan saya bahas di seluruh artikel ini. Jadi, jika Anda ingin ikut, lanjutkan dan unduh dari GitHub.

Kita akan membuat dua file PHP: index.php dan upload.php. File index.php berisi kode yang bertanggung jawab untuk menampilkan form upload file. Di sisi lain, file upload.php bertanggung jawab untuk mengunggah file ke server.

Juga, file akan diunggah di direktori upload_files, jadi Anda perlu memastikan bahwa folder ini ada dan dapat ditulis oleh pengguna web-server.

Di bagian ini, kita akan membahas bagian-bagian kunci dari file index.php.

Mari kita lihat di file index.php pada GitHub:

Meskipun mungkin terlihat seperti bentuk PHP yang khas, ada perbedaan penting dalam nilai atribut enctype dari tag <form>. Ini perlu diatur ke multipart/form-data karena form berisi file field.

Atribut enctype menentukan jenis pengkodean yang harus digunakan ketika formulir dikirimkan, dan dibutuhkan salah satu dari tiga value berikut:

  • application/x-www-form-urlencoded: ini adalah nilai default ketika Anda tidak menetapkan nilai dari atribut enctype secara eksplisit. Dalam hal ini, karakter dikodekan sebelum dikirim ke server. Jika Anda tidak memiliki file field dalam formulir Anda, Anda harus menggunakan value ini untuk atribut enctype.
  • multipart/form-data: Ketika Anda menggunakan nilai multipart/form-data untuk atribut enctype, ini memungkinkan Anda untuk mengunggah file menggunakan metode POST. Juga, memastikan bahwa karakter tidak dikodekan ketika formulir dikirimkan.
  • text/plain: Ini umumnya tidak digunakan. Dengan pengaturan ini, data dikirim tanpa dikodekan.

Selanjutnya, kita menampilkan file field, yang memungkinkan Anda memilih file dari komputer Anda.

Selain itu, kita telah menampilkan pesan di bagian atas formulir. Pesan ini menunjukkan status unggahan file, dan itu akan di set dalam variabel session dengan script upload.php. Kita akan melihat lebih lanjut tentang ini di bagian selanjutnya.

Jadi itu meringkas file index.php. Di bagian selanjutnya, kita akan melihat cara menangani file yang diunggah di sisi server.

Membuat Logika Upload

Di bagian sebelumnya, kita membuat formulir HTML yang ditampilkan di sisi klien dan memungkinkan Anda untuk mengunggah file dari komputer Anda. Di bagian ini, kita akan melihat mitra sisi server yang memungkinkan Anda menangani file yang diunggah.

Tarik kode dari file upload.php di GitHub. Kita akan membahas bagian penting dari file itu.

Di file upload.php, kita telah memeriksa apakah itu permintaan POST yang valid di tempat pertama.

Di PHP, ketika file diunggah, variabel superglobal $_FILES diisi dengan semua informasi tentang file yang diunggah. Ini diinisialisasi sebagai array dan dapat berisi informasi berikut untuk unggahan file yang sukses.

  • tmp_name: Jalur sementara tempat file diunggah disimpan dalam variabel ini.
  • name: Nama sebenarnya dari file disimpan dalam variabel ini.
  • size: menunjukkan ukuran file upload dalam bytes.
  • type: berisi jenis mime file upload.
  • error: Jika ada kesalahan saat unggahan file, variabel ini diisi dengan pesan error yang sesuai. Dalam kasus pengunggahan file yang berhasil, ini berisi 0, yang dapat Anda bandingkan dengan menggunakan konstanta UPLOAD_ERR_OK.

Setelah memvalidasi permintaan POST, kita memeriksa bahwa unggahan file berhasil.

Anda dapat melihat bahwa variabel $_FILES adalah array multi-dimensi, elemen pertama adalah nama file field, dan elemen kedua memiliki informasi tentang file yang diunggah, seperti yang baru saja kita bahas di atas.

Jika unggahan file berhasil, kita menginisialisasi beberapa variabel dengan informasi tentang file yang diunggah.

Dalam cuplikan di atas, kita juga menemukan ekstensi file yang diunggah dan menyimpannya dalam variabel $fileExtension.

Karena file yang diunggah mungkin berisi spasi dan karakter khusus lainnya, lebih baik untuk membersihkan nama file, dan itu persis yang telah kita lakukan di cuplikan berikut.

Sangat penting bahwa Anda membatasi jenis file yang dapat diunggah ke ekstensi tertentu dan tidak mengizinkan semuanya menggunakan form unggahan. Kita telah melakukannya dengan memeriksa ekstensi file yang diunggah dengan serangkaian ekstensi yang ingin kita izinkan untuk mengunggah.

Terakhir, kita menggunakan fungsi move_uploaded_file untuk memindahkan file yang diunggah ke lokasi spesifik pilihan kita.

Fungsi move_uploaded_file membutuhkan dua argumen. Argumen pertama adalah nama file dari file yang diunggah, dan argumen kedua adalah jalur tujuan di mana Anda ingin memindahkan file.

Terakhir, kita mengarahkan pengguna ke file index.php. Juga, kita mengatur pesan yang sesuai dalam variabel session, yang akan ditampilkan kepada pengguna setelah pengalihan dalam file index.php.

Bagaimana Semua Ini Bekerja Bersama

Jangan lupa untuk membuat direktori upload_files dan membuatnya dapat ditulis oleh pengguna web-server. Selanjutnya, lanjutkan dan jalankan file index.php, yang seharusnya menampilkan form pengunggahan file yang terlihat seperti ini:

Indexphp File Output

Klik pada tombol Browse - yang akan membuka kotak dialog yang memungkinkan Anda untuk memilih file dari komputer Anda. Pilih file dengan salah satu ekstensi yang diizinkan di script kita, dan klik tombol Unggah.

Itu harus mengirimkan form, dan jika semuanya berjalan dengan baik, Anda akan melihat file yang diunggah di direktori upload_files. Anda juga dapat mencoba mengunggah file lain dengan ekstensi yang tidak diizinkan, dan memeriksa apakah script kita mencegah upload tersebut.

Kesimpulan

Hari ini, kita membahas dasar-dasar upload file dalam PHP. Di paruh pertama artikel, kita membahas berbagai opsi konfigurasi yang harus ada agar pengunggahan file berfungsi. Kemudian kita melihat contoh dunia nyata yang menunjukkan bagaimana file upload berfungsi di PHP.

Saya harap Anda menikmati artikel ini, dan jangan ragu untuk memposting pertanyaan dan saran Anda di bawah ini!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.