Php 8 Dosya Yükleme

Php 8 Dosya Yükleme

PHP 8'de dosya yükleme işlemi, kullanıcıların bir web formu aracılığıyla sunucuya dosya göndermelerini sağlar. PHP'de dosya yükleme işlemi için formda enctype="multipart/form-data" özelliği kullanılır ve dosya bilgileri $_FILES süper global dizisi ile alınır.

Aşağıda, adım adım PHP ile nasıl dosya yüklendiğini açıklayacağım.

1. HTML Formu Oluşturma

Kullanıcının dosya seçip yükleyeceği bir HTML formu oluşturalım.

<form action="upload.php" method="post" enctype="multipart/form-data"> <label for="file">Bir dosya seçin:</label> <input type="file" name="dosya" id="file"> <br> <br> <input type="submit" value="Dosyayı Yükle"> </form>

Önemli Noktalar:

  • enctype="multipart/form-data": Bu, dosya yüklemeyi destekleyen bir form için gereklidir.
  • input type="file": Dosya seçimi için kullanılan HTML elemanıdır.

2. PHP ile Dosya Yükleme İşlemi (upload.php)

Kullanıcı formu gönderdiğinde, dosyayı sunucuda belirli bir dizine yükleyecek olan PHP kodunu yazalım.

<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Dosya bilgilerini al $dosya = $_FILES['dosya']; // Yüklenen dosyanın geçici yolu $gecici_dosya_yolu = $dosya['tmp_name']; // Yüklenen dosyanın adı $dosya_adi = basename($dosya['name']); // Dosyanın yükleneceği yer (hedef yol) $hedef_yol = 'uploads/' . $dosya_adi; // Dosyanın boyutu (byte cinsinden) $dosya_boyutu = $dosya['size']; // Desteklenen dosya türlerini belirleyelim $gecerli_dosya_turleri = ['image/jpeg', 'image/png', 'application/pdf']; // Dosyanın MIME türünü kontrol edelim $dosya_turu = mime_content_type($gecici_dosya_yolu); // Dosyanın boyut sınırını belirleyelim (örneğin 2MB) $max_boyut = 2 * 1024 * 1024; // Dosyanın boyutunu ve türünü kontrol et if (in_array($dosya_turu, $gecerli_dosya_turleri) && $dosya_boyutu <= $max_boyut) { // Dosyayı sunucuya taşı if (move_uploaded_file($gecici_dosya_yolu, $hedef_yol)) { echo "Dosya başarıyla yüklendi: " . $hedef_yol; } else { echo "Dosya yükleme sırasında hata oluştu."; } } else { echo "Geçersiz dosya türü veya boyut sınırı aşıldı."; } } else { echo "Dosya yüklenmedi."; } ?>

Açıklama:

  1. $_FILES['dosya']: Yüklenen dosyanın bilgilerini tutan bir dizi. Bu dizi aşağıdaki bilgilere sahiptir:

    • $_FILES['dosya']['name']: Dosyanın orijinal adı.
    • $_FILES['dosya']['tmp_name']: Dosyanın geçici olarak kaydedildiği sunucudaki yol.
    • $_FILES['dosya']['size']: Dosyanın boyutu.
    • $_FILES['dosya']['error']: Dosya yükleme sırasında oluşan hata kodları.
    • $_FILES['dosya']['type']: Dosyanın MIME türü.
  2. basename() : Dosyanın orijinal adını almak için kullanılır. Güvenlik açısından kullanıcıların yüklediği dosya adını bu şekilde almak daha güvenli olabilir.

  3. move_uploaded_file() : Dosyayı geçici dizinden, belirtilen hedef dizine taşır.

  4. Dosya Türü ve Boyutu Kontrolü: mime_content_type() ile dosyanın türü kontrol edilir ve belirlenen maksimum dosya boyutuna ($max_boyut) göre kısıtlama yapılır.

3. Hedef Dizin Oluşturma

PHP dosyayı sunucuya yükleyeceği bir dizine ihtiyaç duyar. Bu nedenle, uploads adında bir klasör oluşturup sunucunun bu klasöre yazma iznine sahip olduğundan emin olun.

Linux sunucularda, bu izni vermek için şu komutu kullanabilirsiniz:

chmod 777 uploads

4. Hata Kodları

$_FILES['dosya']['error'] hata kodları şu anlama gelir:

  • UPLOAD_ERR_OK (0): Hata yok, dosya başarıyla yüklendi.
  • UPLOAD_ERR_INI_SIZE (1): PHP yapılandırma dosyasındaki upload_max_filesize direktifini aştı.
  • UPLOAD_ERR_FORM_SIZE (2): HTML formunda belirtilen MAX_FILE_SIZE direktifini aştı.
  • UPLOAD_ERR_PARTIAL (3): Dosya sadece kısmen yüklendi.
  • UPLOAD_ERR_NO_FILE (4): Hiçbir dosya yüklenmedi.

Sonuç:

Bu örnek, PHP 8 ile temel bir dosya yükleme işlemini göstermektedir. Bu işlemi geliştirmek için ek doğrulamalar, güvenlik kontrolleri ve hata yönetimi ekleyebilirsiniz.



Yorum Ekle

Üzerine gel