Merhaba arkadaşlar bu yazımda sizlere son iki PHP yazım da bahsetmiş olduğum PHP ile Dosya Yükleme ve PHP ile Çoklu Dosya Yükleme işlemlerinde yazmış olduğumuz kodları bir fonksiyon haline getirip. Bu işlemleri kolaylaştıracağız.

PHP ile Dosya Yükleme (Tek Dosya) Fonksiyonu

Evet şimdi fonksiyonumuzun kodlarını sizlerle paylaşacağım

    function single_upload($file,$gecerli_uzantilar,$maxBoyut){
        
        $result;
        
        if($file['error'] == 4){
            $result = 'Lütfen bir dosya seçiniz!';
        }else if($file['error'] != 0){
            $result = 'Yüklemeye çalıştığınız dosya da hata var';
        }else if(!is_uploaded_file($file['tmp_name'])){
            $result = 'Yüklemeye çalıştığınız dosya sisteme yüklenirken bir hata oluştu lütfen tekrar deneyiniz!';
        }else{
            if(!in_array($file['type'],$gecerli_uzantilar)){
                $result = 'Lütfen geçerli uzantıda bir dosya yükleyiniz!';
            }else{
                if($file['size'] > $maxBoyut){
                    $result = 'Yüklemeye çalıştığınız dosyanın boyutu çok büyük!';
                }else{
                    $upload = move_uploaded_file($file['tmp_name'], 'upload/' . $file['name']);

                    if($upload){
                        $result = 1;
                    }else{
                        $result = 'Yüklemeye çalıştığınız dosya sisteme yüklenirken bir hata oluştu lütfen tekrar deneyiniz!';
                    }

                }
            }


        }

        return $result;
    }

Burada yapmanız 3 parametresi olan bir fonksiyon yazdık fonksiyon içerisinde yapılan kontrolleri PHP ile Dosya Yükleme İşlemi adlı yazımdan detaylı bir şekilde öğrenebilirsiniz. Eğer dosya yükleme işlemi başarılı ise fonksiyon 1 değerini döndürüyor eğer başarılı değilse sorunun nereden kaynaklandığı hakkında bize bilgi veriyor. Fonksiyona göndermemiz gereken parametreler $_FILES[name], gecerli boyutlarımızın olduğu bir dizi ve dosyamızın olması gereken maksimum boyut.

PHP ile Çoklu Dosya Yükleme Fonksiyonu

    function multi_upload($files,$gecerli_uzantilar,$maxBoyut){
        $result = [];

        foreach($files as $index => $error){
            if($error == 4){
                $result['error'] = 'Lütfen bir dosya seçiniz !';
            }else if($error != 0){
                $result['error'][] = 'Yüklemeye çalıştığınız dosya da bir hata var #' . $files['name'][$index];
            }
        }

        if(!isset($result['error'])){
            
            foreach($files as $index => $type){
                if(!in_array($type,$gecerli_uzantilar)){
                    $result['error'][] = 'Yüklemeye çalıtşığınız dosya geçerli uzantıda değil #' . $files['name'][$index];
                }
            }

            if(!isset($result['error'])){
                foreach($files['size'] as $index => $size){
                    if($size > $maxBoyut){
                        $result['error'][] = 'Yüklemeye çalıştığınız dosyanın boyutu çok büyük #' . $files['name'][$index];
                    }
                }

                if(!isset($result['error'])){
                    foreach($files['tmp_name'] as $inde => $temp){
                        $upload = move_uploaded_file($files['tmp_name'], 'upload/' . $files['name'][$index]);

                        if($upload){
                            $result['success'][] = 'Dosya başarılı ile yüklendi #' . $files['name'][$index];
                        }else{
                            $result['error'][] = 'Dosya taşınamadı #' . $files['name'][$index];
                        }

                    }
                }

            }


        }

        return $result;

    }

Bu fonksiyonumuzda ilk fonksiyon gibi 3 parametre alıyor. İlk parametresi $_FILES değişkeni, ikinci parametre geçerli uzantıların olduğu bir dizi ve üçüncü parametre ise yüklenen dosyaların olabileceği maksimum boyut olacak şekilde ayarlamanız gerekiyor. Bu fonksiyon sonuç olarak bir dizi döndürüyor ve işlemin başarılı olup olmadığını anlamak için bu dizinin error adlı bir indisi olup olmadığını kontrol etmek olacaktır. Ayrıca bu fonksiyon da yapılan kontrollerin detaylı anlatımları ise PHP ile Çoklu Dosya Yükleme adlı yazımı inceleyerek görebilirsiniz.

Özet,

Bu yazımda sizlere PHP ile Dosya Yükleme işlemlerinde fazla satırlardan tasarruf etmeniz amacıyla iki adet fonksiyon paylaştım. Bu fonksiyonlar genel olarak yapılabilecek bir çok kontrolü yaparken hine de daha kompleks sistemler için daha gelişmiş kodlar yazmanız gerekebilir fakat buradaki kodlar ise size bir başlangıç olacaktır.

Bir sonraki PHP yazım da PDO ile Veritabanı işlemleri yapmaya başlayacağız. O zamana kadar PHP hakkında yazmış olduğum yazıları merak ediyorsanız buraya tıklayabilirsiniz.