CodeBlanks Logo Icon CodeBlanks

$_FILES süper globali

PHP kursu · Orta seviye · Ders 76/115

$_FILES ile çok parçalı form verisinden dosya bilgisini almayı öğrenirsin.

$_FILES süper globali

Dosya yükleyen bir HTML formu, veriyi çok parçalı (multipart) biçiminde gönderir. PHP bu veriyi $_FILES süper globaliyle yakalar. Tıpkı $_POST gibi her kapsamdan doğrudan erişilebilir; ama içinde metin değil, dosya üst verisi (metadata) tutar.

Formun enctype özniteliği multipart/form-data olmalıdır. type="file" alanı yüklenen dosyayı temsil eder. PHP dosyayı geçici bir konuma kaydeder ve bilgilerini $_FILES['avatar'] altında toplar; avatar alanın name değeridir.

$_FILES dizisinin yapısı

$_FILES['avatar'] beş anahtar içeren bir dizidir. Her biri yüklemeyle ilgili farklı bir bilgiyi tutar:

  • name: kullanıcının gönderdiği orijinal dosya adı
  • type: tarayıcının bildirdiği MIME türü (örneğin image/png)
  • tmp_name: dosyanın sunucudaki geçici yolu
  • error: hata kodu (0 başarı anlamına gelir)
  • size: bayt cinsinden dosya boyutu

Bu alanlara $file['name'] biçiminde erişirsin. tmp_name geçici olduğu için betik bitince silinir; kalıcı olması için taşıman gerekir.

Uygulama Dosya üst verisini yazdır

Bir $_FILES['avatar'] için test verisi tanımla: name 'profil.jpg', tmp_name '/tmp/phpAbCd.tmp', error 0, size 2048. Sonra $file = $_FILES['avatar'] ile al ve üç satır yazdır: Ad: + name, Yol: + tmp_name, Boyut: + size + ' bayt'. Her satırın sonuna "\n" ekle.

Örnek çözümü göster
Önce $_FILES['avatar'] dizisini tanımla, sonra $file değişkenine ata ve echo ile üç alanı yazdır.
Örnek çözüm:
<?php
// $_FILES tanımla
$_FILES['avatar'] = [
    'name' => 'profil.jpg',
    'tmp_name' => '/tmp/phpAbCd.tmp',
    'error' => 0,
    'size' => 2048
];

$file = $_FILES['avatar'];
echo "Ad: " . $file['name'] . "\n";
echo "Yol: " . $file['tmp_name'] . "\n";
echo "Boyut: " . $file['size'] . " bayt\n";

Kendini test et

  1. Geçici yol hangi anahtarda tutulur?

    • name
    • tmp_name
    • size
    • error
    Cevabı göster

    tmp_name — Doğru. tmp_name dosyanın geçici yolunu tutar.

  2. Orijinal adı oku

    $original = $_FILES['avatar']['____'];
    Cevabı göster
    $original = $_FILES['avatar']['name'];
  3. $_FILES alanlarını eşleştir

    name
    Orijinal dosya adı
    type
    MIME türü
    tmp_name
    Geçici yol
    size
    Bayt cinsinden boyut
    error
    Hata kodu

Orta seviye bölümündeki tüm dersler