Hoş Geldin, Ziyaretçi!

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Php & Ajax ile Dosya/Resim/Video Yüklemek

  • Konbuyu başlatan Emre KRMN
  • Başlangıç tarihi
Emre KRMN

Emre KRMN

Tilki Adayı
Katılım
6 May 2022
Mesajlar
50
Ticaret: 0 / 0 / 0
Merhabalar,
Bu konumda siz değerli tilki kullanıcılarında bulunan yazılım geliştirici arkadaşlar için yararlı bir kod paylaşacağım. Bu kodlarla, sayfa yenilemeden, ajax ile direkt olarak herhangi bir dosya, video veya resim yükleyebilir/yükletebilirsiniz. Ben bunu çoğu müşterimin yönetim paneline kolaylık olsun diye ekliyorum.

Ekran Görüntüleri:
1
2

HTML Kodlarımız:
HTML:
<form id="uploadForm" enctype="multipart/form-data">
<div class="form-group">
<label for="file">Yüklenecek Dosya</label>
<input type="file" class="form-control" name="file" id="file" required />
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Upload</button>
</div>
</form>
<div id="result"></div>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<script src="assets/custom.js"></script>

custom.js içeriğimiz (yukarıda script kodları içerisinde yer alıyor);
JavaScript:
$('#uploadForm').on('submit',function(e){
    e.preventDefault();
    $.ajax({
        url: 'upload.php', // Verileri Post Ettiğimiz dosya adı
        type: 'POST', // Form Metodumuz
        data: new FormData(this), // Form ile gelen verilerimiz
        contentType: false,
        processData: false,
        beforeSend: function(){
            // Form Post edildikten sonra yapılacak işlem
            $('#result').html('<div class="progress"><div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width:100%;"><span class="sr-only">Lütfen Bekleyiniz....</span></div></div>');
        },
        success: function(data){
            // upload.php dosyamıza verilerin gönderildikten sonra işlem başarılı ise upload.php ile gelen sonuç değerini yazdıracağımız satır
            $('#result').html(data);
            $('#uploadForm')[0].reset(); // İşlem başarılı olduktan sonra formu sıfırlar
        }
    });
});

upload.php içeriğimiz;
PHP:
<?php
    if($_FILES){
        /* Dosya Adını Düzeltme Fonksiyonu */
            // Yüklenen dosya adındaki türkçe karakterleri değiştirir
            function renamefile($filename) {
                $find = array('Ç', 'Ş', 'Ğ', 'Ü', 'İ', 'Ö', 'ç', 'ş', 'ğ', 'ü', 'ö', 'ı', '-');
                $replace = array('c', 's', 'g', 'u', 'i', 'o', 'c', 's', 'g', 'u', 'o', 'i', ' ');
                $filename = strtolower(str_replace($find, $replace, $filename)); // str_replace() ile türkçe karakterleri değiştiriyoruz. strtolower() ile büyük harfleri küçük harfe dönüştürüyoruz.
                $filename = str_replace(' ', '-', $filename); // str_replace() fonksiyonu ile boşlukları - yapıyoruz.
                return $filename;
            }
        /* Dosya Adını Düzeltme Fonksiyonu */
        $uploadfolder = 'upload'; // Dosyanın yükleneceği klasörü yolunu yazıyoruz.
        $file = $_FILES['file']; // $_FILES ile gelen verileri değişkene atıyoruz.
        $formats = array("image/pjpeg", "image/jpeg", "image/gif", "image/bmp", "image/x-png", "image/png","video/mp4", "video/mpg", "video/mpeg", "video/mov", "video/avi", "video/flv", "video/wmv","application/pdf", "application/doc", "application/docx", "application/xls", "application/xlsx"); // tüm dosyaları yükleyebilirsiniz
        $url_decode = urldecode($file['name']);
        $name = explode('/', $url_decode);
        $rand = time(); // Random bir değer atamak için burada zamanı alıyoruz.
        if (in_array($file['type'], $formats)) {
            // Yüklemek istenilen dosyanın izin verilen dosya formatlarına uygunluğunu kontrol ediyoruz.
            $upload_file = $uploadfolder.'/'.$rand.renamefile($name[count($name) - 1]);
            move_uploaded_file($file['tmp_name'], $upload_file);
            $filename = $rand.renamefile($name[count($name) - 1]);
            echo '<div class="alert alert-success text-center"><strong>İşlem Başarılı.!</strong> Dosya başarıyla yüklendi.<br><br><a href="'.$uploadfolder.'/'.$filename.'" class="btn btn-success btn-xs" target="_blank">Dosyayı Görüntüle</a></div>'; // İşlem başarılı ise sonucu ekrana yazdırıyoruz.
        }else{
            echo '<div class="alert alert-danger"><strong>Hata.!</strong> Bir hata oluştu lütfen web yöneticinize başvurunuz. Yanlış Dosya Formatı veya boyut sınırı aşıyor.</div>'; // Eğer dosya formatı izin verdiğimiz formatlara uygun değilse hata mesajını ekrana yazdırıyoruz.
        }
    }
?>

Eğer ki dosya boyutlarını ayarlamak istiyorsanız .htaccess dosyanıza aşağıdaki kodları ekleyin ve dosya boyutlarını belirleyin.
Kod:
php_value upload_max_filesize 1000M
php_value post_max_size 1000M