Cara menggunakan php check file size

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 echo php_ini_loaded_file(); ?>
61 untuk menemukannya. Cukup buat file PHP di server Anda dengan baris berikut, dan buka dari browser.

1
<?php echo php_ini_loaded_file(); ?>

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

1
; Whether to allow HTTP file uploads.
2
file_uploads = On
3
4
; Temporary directory for HTTP uploaded files.
5
<?php echo php_ini_loaded_file(); ?>
0
<?php echo php_ini_loaded_file(); ?>
1
<?php echo php_ini_loaded_file(); ?>
2
<?php echo php_ini_loaded_file(); ?>
3
<?php echo php_ini_loaded_file(); ?>
4
<?php echo php_ini_loaded_file(); ?>
5
<?php echo php_ini_loaded_file(); ?>
6
<?php echo php_ini_loaded_file(); ?>
7
<?php echo php_ini_loaded_file(); ?>
8
<?php echo php_ini_loaded_file(); ?>
9
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
; Whether to allow HTTP file uploads.
0
; Whether to allow HTTP file uploads.
1
; Whether to allow HTTP file uploads.
2
; Whether to allow HTTP file uploads.
3
; Whether to allow HTTP file uploads.
4

Pengaturan kunci

<?php echo php_ini_loaded_file(); ?>
62

Value dari 

<?php echo php_ini_loaded_file(); ?>
62 directive harus disetel ke
<?php echo php_ini_loaded_file(); ?>
64 untuk memungkinkan pengunggahan file. Nilai default dari direktif ini adalah
<?php echo php_ini_loaded_file(); ?>
64.

<?php echo php_ini_loaded_file(); ?>
66

<?php echo php_ini_loaded_file(); ?>
67 direktive memungkinkan Anda untuk mengkonfigurasi ukuran maksimum yang diupload. Secara default, ini diatur ke
<?php echo php_ini_loaded_file(); ?>
68 (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
<?php echo php_ini_loaded_file(); ?>
66 ketika Anda mencoba mengunggah file, Anda perlu meningkatkan nilai ini. Jika Anda melakukannya, pastikan juga untuk meningkatkan
<?php echo php_ini_loaded_file(); ?>
70 (lihat di bawah).

<?php echo php_ini_loaded_file(); ?>
71

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.

<?php echo php_ini_loaded_file(); ?>
70

Direktif

<?php echo php_ini_loaded_file(); ?>
70 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
<?php echo php_ini_loaded_file(); ?>
66. Misalnya, jika
<?php echo php_ini_loaded_file(); ?>
66 Anda
<?php echo php_ini_loaded_file(); ?>
76 (16 megabyte), Anda mungkin ingin menetapkan
<?php echo php_ini_loaded_file(); ?>
70 menjadi
<?php echo php_ini_loaded_file(); ?>
78.

<?php echo php_ini_loaded_file(); ?>
79

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

<?php echo php_ini_loaded_file(); ?>
80, jumlah yang masuk akal.

<?php echo php_ini_loaded_file(); ?>
81

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.

<?php echo php_ini_loaded_file(); ?>
82 (60 detik) adalah nilai yang bagus untuk sebagian besar aplikasi.

<?php echo php_ini_loaded_file(); ?>
83

Directivf

<?php echo php_ini_loaded_file(); ?>
83 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
<?php echo php_ini_loaded_file(); ?>
70. Nilai default adalah
<?php echo php_ini_loaded_file(); ?>
86 (128 megabyte), jadi kecuali Anda memiliki
<?php echo php_ini_loaded_file(); ?>
70 yang sangat besar dan
<?php echo php_ini_loaded_file(); ?>
66, Anda tidak perlu khawatir tentang hal ini.

<?php echo php_ini_loaded_file(); ?>
89

Jumlah maksimum detik script diizinkan untuk dijalankan. Jika Anda menghadapi masalah saat mengunggah file besar, Anda dapat mempertimbangkan untuk meningkatkan nilai ini.

<?php echo php_ini_loaded_file(); ?>
90 (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

<?php echo php_ini_loaded_file(); ?>
91.

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

Mari kita lihat di file index.php pada GitHub:

1
; Whether to allow HTTP file uploads.
6
2
; Whether to allow HTTP file uploads.
8
3
2
0
4
2
2
5
2
4
<?php echo php_ini_loaded_file(); ?>
1
2
6
<?php echo php_ini_loaded_file(); ?>
3
2
8
<?php echo php_ini_loaded_file(); ?>
4
file_uploads = On
0
<?php echo php_ini_loaded_file(); ?>
6
file_uploads = On
2
<?php echo php_ini_loaded_file(); ?>
8
file_uploads = On
4
<?php echo php_ini_loaded_file(); ?>
9
file_uploads = On
6
1
1
file_uploads = On
8
1
3
3
0
1
4
3
2
1
6
3
4
1
8
3
6
1
9
3
8
; Whether to allow HTTP file uploads.
1
4
0
; Whether to allow HTTP file uploads.
3
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
; Temporary directory for HTTP uploaded files.
0
; Temporary directory for HTTP uploaded files.
1
; Temporary directory for HTTP uploaded files.
2
; Temporary directory for HTTP uploaded files.
3
; Temporary directory for HTTP uploaded files.
4
; Temporary directory for HTTP uploaded files.
5

Meskipun mungkin terlihat seperti bentuk PHP yang khas, ada perbedaan penting dalam nilai atribut

<?php echo php_ini_loaded_file(); ?>
92 dari tag
<?php echo php_ini_loaded_file(); ?>
93. Ini perlu diatur ke
<?php echo php_ini_loaded_file(); ?>
94 karena form berisi file field.

Atribut

<?php echo php_ini_loaded_file(); ?>
92 menentukan jenis pengkodean yang harus digunakan ketika formulir dikirimkan, dan dibutuhkan salah satu dari tiga value berikut:

  • <?php echo php_ini_loaded_file(); ?>
    
    96: ini adalah nilai default ketika Anda tidak menetapkan nilai dari atribut
    <?php echo php_ini_loaded_file(); ?>
    
    92 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
    <?php echo php_ini_loaded_file(); ?>
    
    92.
  • <?php echo php_ini_loaded_file(); ?>
    
    94: Ketika Anda menggunakan nilai
    <?php echo php_ini_loaded_file(); ?>
    
    94 untuk atribut
    <?php echo php_ini_loaded_file(); ?>
    
    92, ini memungkinkan Anda untuk mengunggah file menggunakan metode POST. Juga, memastikan bahwa karakter tidak dikodekan ketika formulir dikirimkan.
  • 1
    02: Ini umumnya tidak digunakan. Dengan pengaturan ini, data dikirim tanpa dikodekan.

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

1
; Temporary directory for HTTP uploaded files.
7

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.

1
; Whether to allow HTTP file uploads.
6
2
file_uploads = On
6
3
file_uploads = On
8
4
3
0
5
3
2
<?php echo php_ini_loaded_file(); ?>
1
3
4
<?php echo php_ini_loaded_file(); ?>
3
2
0

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.

1
<?php echo php_ini_loaded_file(); ?>
03
2
<?php echo php_ini_loaded_file(); ?>
05
3
<?php echo php_ini_loaded_file(); ?>
07

Di PHP, ketika file diunggah, variabel superglobal

1
03 diisi dengan semua informasi tentang file yang diunggah. Ini diinisialisasi sebagai array dan dapat berisi informasi berikut untuk unggahan file yang sukses.

  • 1
    04: Jalur sementara tempat file diunggah disimpan dalam variabel ini.
  • 1
    05: Nama sebenarnya dari file disimpan dalam variabel ini.
  • size: menunjukkan ukuran file upload dalam bytes.
  • 1
    06: berisi jenis mime file upload.
  • 1
    07: 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
    1
    08.

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

1
<?php echo php_ini_loaded_file(); ?>
09
2
<?php echo php_ini_loaded_file(); ?>
05
3
<?php echo php_ini_loaded_file(); ?>
07

Anda dapat melihat bahwa variabel

1
03 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.

1
<?php echo php_ini_loaded_file(); ?>
15
2
<?php echo php_ini_loaded_file(); ?>
17
3
<?php echo php_ini_loaded_file(); ?>
19
4
<?php echo php_ini_loaded_file(); ?>
21
5
<?php echo php_ini_loaded_file(); ?>
23
<?php echo php_ini_loaded_file(); ?>
1
<?php echo php_ini_loaded_file(); ?>
25
<?php echo php_ini_loaded_file(); ?>
3
<?php echo php_ini_loaded_file(); ?>
27

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

1
10.

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.

1
<?php echo php_ini_loaded_file(); ?>
29

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.

1
<?php echo php_ini_loaded_file(); ?>
31
2
<?php echo php_ini_loaded_file(); ?>
33
3
<?php echo php_ini_loaded_file(); ?>
05
4
<?php echo php_ini_loaded_file(); ?>
07

Terakhir, kita menggunakan fungsi

1
11 untuk memindahkan file yang diunggah ke lokasi spesifik pilihan kita.

1
<?php echo php_ini_loaded_file(); ?>
39
2
<?php echo php_ini_loaded_file(); ?>
41
3
<?php echo php_ini_loaded_file(); ?>
43
4
5
<?php echo php_ini_loaded_file(); ?>
46
<?php echo php_ini_loaded_file(); ?>
1
<?php echo php_ini_loaded_file(); ?>
48
<?php echo php_ini_loaded_file(); ?>
3
<?php echo php_ini_loaded_file(); ?>
50
<?php echo php_ini_loaded_file(); ?>
4
<?php echo php_ini_loaded_file(); ?>
07
<?php echo php_ini_loaded_file(); ?>
6
<?php echo php_ini_loaded_file(); ?>
54
<?php echo php_ini_loaded_file(); ?>
8
<?php echo php_ini_loaded_file(); ?>
48
<?php echo php_ini_loaded_file(); ?>
9
<?php echo php_ini_loaded_file(); ?>
58
1
1
<?php echo php_ini_loaded_file(); ?>
07

Fungsi

1
11 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:

Cara menggunakan php check file size
Cara menggunakan php check file size
Cara menggunakan php check file size

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!