Dosya boyutu sınırı
Yükleme için dosya boyutu sınırını kontrol etmeyi öğrenirsin.
Dosya boyutu sınırı
Sınırsız boyut kabul etmek, sunucunun diskini doldurabilir. Bu yüzden dosya boyutu için bir üst sınır koymalısın. Örneğin profil resmi için 2 MB (2097152 bayt) makul bir limittir.
Yüklenen dosyanın boyutu $_FILES['avatar']['size'] alanında bayt cinsinden tutulur. Kontrol basittir: if ($file['size'] > $maxBytes).
Bu sınır upload_max_filesize (php.ini) değerinden büyük olamaz; PHP zaten o sınırı aşan dosyaları reddeder. Sen kendi uygulama sınırını daha düşük tutabilirsin.
upload_max_filesize sınırı
PHP'nin kendisi de iki yapılandırma değeriyle sınır koyar: upload_max_filesize tek bir dosyanın azami boyutu, post_max_size tüm POST gövdesinin azami boyutudur. Bunlar php.ini'de tanımlanır.
Eğer dosya upload_max_filesize'i aşarsa PHP yüklemeyi iptal eder ve $_FILES['avatar']['error'] değerini UPLOAD_ERR_INI_SIZE (1) yapar. size alanı 0 olur.
Yani senin kontrolün uygulama sınırı içindir; PHP'nin sınırı zaten çalışır. İkisini birlikte kullanmak en güvenlisidir.
Uygulama checkSize fonksiyonu
Bir checkSize(array $file, int $maxBytes): string fonksiyonu yaz. İçinde if ($file['size'] > $maxBytes) ile kontrol et. Aşarsa return 'Çok büyük: ' . $file['size'] . ' > ' . $maxBytes, aşmazsa return 'Kabul: ' . $file['size'] . ' bayt' döndür. Test için $_FILES['avatar'] tanımla (name: 'profil.jpg', tmp_name: '/tmp/phpAbCd.tmp', error: 0, size: 5242880) ve echo checkSize($_FILES['avatar'], 2097152) . "\n" yaz.
Örnek çözümü göster
' + size + ' > ' + maxBytes döndür; aşmazsa 'Kabul: ' + size + ' bayt' döndür.
Örnek çözüm:
<?php
// Dosya boyutu kontrolü
function checkSize(array $file, int $maxBytes): string {
if ($file['size'] > $maxBytes) {
return "Çok büyük: " . $file['size'] . " > " . $maxBytes;
}
return "Kabul: " . $file['size'] . " bayt";
}
$_FILES['avatar'] = [
'name' => 'profil.jpg',
'tmp_name' => '/tmp/phpAbCd.tmp',
'error' => 0,
'size' => 5242880
];
echo checkSize($_FILES['avatar'], 2097152) . "\n";
Kendini test et
-
Yüklenen dosyanın boyutu nerede tutulur?
- $_SERVER['CONTENT_LENGTH']
- $_POST['size']
- $_FILES['file']['error']
- $_FILES['file']['size']
Cevabı göster
$_FILES['file']['size'] — Doğru. size alanı bayt cinsinden boyutu verir.
-
Boyut karşılaştırması
if ($file['size'] > ____) { return false; }Cevabı göster
if ($file['size'] > $maxBytes) { return false; } -
Boyut birimlerini eşleştir
- 1 KB
- 1024 bayt
- 1 MB
- 1048576 bayt
- 2 MB
- 2097152 bayt
- 5 MB
- 5242880 bayt