Php 8 Çoklu Dosya Yükleme Özellikleri

Php 8 Çoklu Dosya Yükleme Özellikleri

PHP 8 ile çoklu dosya yükleme işlemi, bir form aracılığıyla birden fazla dosyanın aynı anda yüklenmesine olanak tanır. Bu özellik, kullanıcıların toplu olarak dosya yüklemelerini sağlar. PHP’nin dosya yükleme özelliklerini kullanarak çoklu dosya yükleme işlemi kolaylıkla gerçekleştirilebilir.

1. HTML Formu ile Çoklu Dosya Yükleme

Öncelikle, birden fazla dosya seçimine izin veren bir HTML formu oluşturmalıyız. Formda multiple özelliğini kullanarak kullanıcıların aynı anda birden fazla dosya seçmesine olanak tanırız.

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Çoklu Dosya Yükleme</title> </head> <body> <h2>Çoklu Dosya Yükleme Formu</h2> <form action="upload.php" method="POST" enctype="multipart/form-data"> <label for="files">Dosyaları Seçin:</label> <input type="file" name="files[]" id="files" multiple> <br> <br> <input type="submit" value="Dosyaları Yükle"> </form> </body> </html>

2. PHP ile Çoklu Dosya Yükleme İşlemi

Formdan gönderilen dosyalar, PHP’de $_FILES süper global değişkeni ile alınır. Çoklu dosya yüklemesi sırasında, dosyalar bir dizi olarak gelir. Her bir dosyanın name, type, tmp_name, error ve size değerleri diziler halinde olur. Aşağıda bu sürecin nasıl işlediği gösterilmiştir.

2.1. PHP Dosya Yükleme Mantığı

PHP'de çoklu dosya yüklemek için döngü kullanılarak her bir dosya işlenir. Her bir dosya için, yükleme dizinine taşımak için move_uploaded_file() fonksiyonu kullanılır.

<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { $uploadDir = 'uploads/'; // Her dosyayı işlemek için döngü foreach ($_FILES['files']['tmp_name'] as $key => $tmpFile) { // Yüklenen dosyanın adı $fileName = basename($_FILES['files']['name'][$key]); // Dosyanın uzantısını alma $fileExtension = pathinfo($fileName, PATHINFO_EXTENSION); // Benzersiz dosya adı oluşturma $newFileName = uniqid() . '.' . $fileExtension; $uploadFile = $uploadDir . $newFileName; // Klasörün var olup olmadığını kontrol etme if (!is_dir($uploadDir)) { mkdir($uploadDir, 0755, true); // Klasör oluşturma } // Dosyayı klasöre taşıma if (move_uploaded_file($tmpFile, $uploadFile)) { echo "Dosya başarıyla yüklendi: " . htmlspecialchars($newFileName) . "<br>"; } else { echo "Dosya yükleme sırasında bir hata oluştu: " . htmlspecialchars($fileName) . "<br>"; } } } ?>

3. Güvenlik ve Ekstra Kontroller

Çoklu dosya yükleme işlemi sırasında her bir dosya için güvenlik ve kontrol sağlamak önemlidir. Dosya uzantısı ve boyutu kontrolü, güvenliği artırmak için kullanılabilir.

3.1. Dosya Uzantısının Kontrolü

Yalnızca belirli uzantılara sahip dosyaların yüklenmesine izin verilebilir. Örneğin, yalnızca resim dosyalarına izin vermek için her bir dosyanın uzantısını kontrol edebiliriz.

$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'pdf']; if (!in_array(strtolower($fileExtension), $allowedExtensions)) { die("Yalnızca JPG, PNG, GIF ve PDF dosyalarına izin verilmektedir."); }

3.2. Dosya Boyutu Kontrolü

Her bir dosyanın boyutunu kontrol ederek belirli bir boyutun üzerinde dosyaların yüklenmesini engelleyebilirsiniz. Örneğin, 2MB boyutundaki dosyaları sınırlandırabiliriz.

$maxFileSize = 2 * 1024 * 1024; // 2MB if ($_FILES['files']['size'][$key] > $maxFileSize) { die("Dosya boyutu 2MB'den büyük olamaz: " . htmlspecialchars($fileName)); }

4. Tam Örnek: PHP 8 ile Çoklu Dosya Yükleme ve Güvenlik Kontrolleri

Aşağıda, çoklu dosya yükleme işlemini gerçekleştiren ve güvenlik kontrollerini içeren tam bir örnek bulunmaktadır:

<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { $uploadDir = 'uploads/'; $allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'pdf']; $maxFileSize = 2 * 1024 * 1024; // 2MB foreach ($_FILES['files']['tmp_name'] as $key => $tmpFile) { $fileName = basename($_FILES['files']['name'][$key]); $fileExtension = strtolower(pathinfo($fileName, PATHINFO_EXTENSION)); $fileSize = $_FILES['files']['size'][$key]; // Dosya uzantısı kontrolü if (!in_array($fileExtension, $allowedExtensions)) { echo "İzin verilmeyen dosya uzantısı: " . htmlspecialchars($fileName) . "<br>"; continue; } // Dosya boyutu kontrolü if ($fileSize > $maxFileSize) { echo "Dosya boyutu 2MB'den büyük olamaz: " . htmlspecialchars($fileName) . "<br>"; continue; } // Benzersiz dosya adı oluşturma $newFileName = uniqid() . '.' . $fileExtension; $uploadFile = $uploadDir . $newFileName; // Klasörün var olup olmadığını kontrol etme if (!is_dir($uploadDir)) { mkdir($uploadDir, 0755, true); // Klasör oluşturma } // Dosyayı klasöre taşıma if (move_uploaded_file($tmpFile, $uploadFile)) { echo "Dosya başarıyla yüklendi: " . htmlspecialchars($newFileName) . "<br>"; } else { echo "Dosya yükleme sırasında bir hata oluştu: " . htmlspecialchars($fileName) . "<br>"; } } } ?>

5. Çoklu Dosya Yükleme İpuçları

  • Yükleme Limiti Belirleme: Çok fazla dosya yüklenmesini engellemek için, yükleme sayısını sınırlayabilirsiniz. Örneğin, maksimum 10 dosya yüklenmesine izin verebilirsiniz.
$maxFiles = 10; if (count($_FILES['files']['name']) > $maxFiles) { die("En fazla 10 dosya yükleyebilirsiniz."); }
  • Hata Mesajları Gösterimi: Hata mesajlarını daha kullanıcı dostu hale getirmek için formdan gönderilen dosya ismini göstererek hata mesajlarını kullanıcıya iletebilirsiniz.

Sonuç

Bu rehberde, PHP 8 ile çoklu dosya yükleme işlemi anlatıldı. Dosya yüklerken güvenlik açısından uzantı ve boyut kontrolü yaparak uygulamanızın güvenliğini artırabilirsiniz. Aynı zamanda, kullanıcıların aynı anda birden fazla dosya yüklemesini kolaylaştırabilirsiniz.



Yorum Ekle

Üzerine gel