Php ile Dosya Yükleme ve Silme

 bcakir
 30 Ekim 2011
 Php

Merhaba arkadaşlar, bu yazımda bir klasör içerisine dosya yüklemeyi ve burada bulunan dosyaları silmeyi anlatacağım. Bu uygulama sayesinde kolayca serverınıza dosya yükleyebilecek ve var olan dosyaları silebileceksiniz. Uygulamamız hem dosya yükleme işlemini hemde dosya yönetme işlemlerini içerecek. Bu iki konu ayrı ayrı anlatılan konular olmasına rağmen ben bir uygulama içerisinde birleştirmeyi uygun buldum. Yapacağımız uygulamayı daha önce anlattığım resim yükleme yazısını geliştirerek yapacağım. Uygulamamızın içeriği; uploads klasörü içinde bulunan dosyaları listeleme, istenilen dosyayı silme ve bu klasöre dosya yüklemeyi içerecek. Uygulamamız biraz uzun fakat adım adım açıklama yolunu izleyerek her bölümünü öğrenmenizi sağlamaya çalışacağım. Uygulamamızın içeriği bu şekilde olacak, şimdi form elemanları kısmını yaparak uygulamamızı geliştirmeye başlayabiliriz.

<!DOCTYPE html>
<html>
<head>
<title>Dosya Yükleme ve Silme</title>
</head>
<body>

<form action="index.php" enctype="multipart/form-data" method="post">
Dosya Yükleme: <input type="file" name="datafile" size="40" />
<input type="submit" name="submit" value="Gönder" />
</form>

</body>
</html>

Yukarıda dosya seçme ve yükleme işlemini yapacağımız form elemanlarını  index.php sayfamıza ekledik. Bu arada uygulamamızı sadece bir sayfa içerisinde geliştireceğiz. Bundan dolayı da bütün kodları index.php olarak kaydedin. Şimdi de uygulamamızın geri kalan kısımlarını Php ile geliştirmeye başlayalım.

<?php
//dosya silme işlemi
if(isset($_GET['sil'])){
    $sil = 'uploads/'.$_GET['sil'];
    @unlink($sil);
}

//dosya upload işlemleri
if(isset($_FILES['datafile']['name'])){
    //seçilen dosya bilgilerinin alınması
    $isim = $_FILES['datafile']['name'];
    $yer = $_FILES['datafile']['tmp_name'];
    $tip = $_FILES['datafile']['type'];
    $boyut = $_FILES['datafile']['size'];   

    //en fazla yüklenebilecek dosya büyüklüğünü girin
    $max_boyut=10000000;

    if($boyut<$max_boyut){
        //yüklenecek dosyanın yeri ve ismi
        $hedef = 'uploads/yeni_'.$isim;

        //dosya yükleme işlemi
        //move_uploaded_file hata verirse, onun yerine copy kullanın
        if (move_uploaded_file($yer, $hedef)){
            echo "Dosya başarıyla yüklendi.";
        }else{
            echo "Dosya yüklenemedi.";
        }
    }else{
        echo "En fazla 10 MB büyüklüğnde dosya yüklenebilir.";
    }
}

//uploads klasöründeki dosyaları alma işlemleri
$liste = @dosyalari_bul("uploads");
//her birini gösterme
echo "<br />Silinecek Dosyalar:<br />";
foreach($liste as $lst){
	echo $lst." <a href='index.php?sil={$lst}'>Sil</a><br />";
}

//klasörden dosyaları alma fonksiyonu
function dosyalari_bul($klasor) {
	$dosyalar = array();
    //klasörü açma
	$ac = opendir($klasor); 

    //dosyaların alınması
    while($q=readdir($ac)) {
        if ($q != "." && $q != "..") {
            $dosyalar[] = $q;
        }
    }

    //klasörü kapatma
	closedir($ac);
	return $dosyalar;
}
?>

Yukarıda uygulamamızın bütün içeriğini adım adım anlattım. Bundan dolayı herhangi bir yere pek takılmazsınız diye düşünüyorum ama anlamadığınız bir yer olursa, sormaya çekinmeyin. Uygulamanın en büyük dosya boyutu büyüklüğünü değiştirebilir ayrıca da kodu biraz daha geliştirip dosya tipi kısıtlamaları getirebilirsiniz. Bu arada serverınızın en fazla dosya yükleme boyutunu kontrol edin ve uygulamanıza uygun değilse bu sınırlamayı değiştirin. Bunu php.ini dosyasına girip upload_max_filesize sınırını değiştirerek kolayca yapabilirsiniz. Unutmadan, uygulamamızın çalıştığı dizine uploads adlı klasör açmayı unutmayın. Yazımız, yaptığımız uygulamanın gerekli bilgilerinin anlatımıyla burada son bulmuş oldu. Yararlı olması dileğiyle.

 6.464 Okunma

Bu yazıya 13 yorum yapılmış.

  1. emeğine sağlık kardeş allah razı olsun

  2. hocam sana birşey sorucam .
    ben index.php sayfamda ekle sil listeleme butonları kullanıcam.
    bunlarıda şu şekilde kullanmak istiyorum;
    mesala ekle butonuna basıldı
    ekleme kodları ve ekleme gerçekleşecek ?>
    ekleme kodları ve silme gerçekleşecek ?>
    ekleme kodları ve listeleme gerçekleşecek ?>
    bunları yaparken yine index dosyası içerisinde olacak,farklı bir sayfaya linkle me olmayacak.
    yardımcı olursanız çok makbul geçer.iyi çalışmalar.

    • Bu uygulamayı ve daha önce yazdığım dosya uygulamaları ile ilgili yazıları detaylı olarak incelemenizi ve öğrenmenizi tavsiye ederim.

  3. S.a ben bu kondalrınızın aynısını yazdım uploads dosyasına resmi yüklüyor fakat bu resim açılmıyor kullanıcı izni yok yetkiniz yok filan diyor lütfen bunada bir çözüm yolu bulurmusunuz bu benim pcden mi kaynaklanıyor yoksa kodlardamı var bişiler

    • Uygulamayı denedim herhangi bir sorun yok, sizden kaynaklı bir problem olması gerekiyor.

  4. Allah razı olsun çok işime yaradı.

  5. Bende resim silme işlemi yapıyorum ama Sürekli Resim Silinemedi diyor bi bakarsanız sevinirim

    Bu form Kısmı

    Buda resimsil.php

    $dosyaadi = “../image/”.$_POST[“resimsil”];
    if(@unlink($dosyaadi))
    echo “Resim Silindi.”;
    else
    echo “Resim Silinemedi”;

    • Form kısmını yazmamışım 🙂

  6. Merhaba,
    Ben sınıf öğretmeniyim benim egitim-ogretim.com diye bir sitem var bu siteyi devir almıştım birinden. Yalnız sitenin yöneticisi kendi panelinden dosya yükleyebiliyor ben ziyaretçilerimin de benim kontrolüm altında dosya yüklemesini istiyorum yükleme formu oluşturmak için çok araştrıdım uğraştım fakat yapamadım. Yani, aslında php falan pek bilgim yok.
    Acaba dosya kategorilerime göre ziyaretçilerin dosya yüklemesini, bu dosyaları onaylamam sorası sitede yayınlamasını nasıl yapabilirim? Örnek site mesela dosyabak.com sitesinin çok basit ve güzel olmuş o tarz bir şey nasıl yapabilirim?

  7. silme işlemini yapamadım yardım eder misiniz?

    • Silmede sıkıntı yok kodu kullandım oldu.

  8. Başarılı bir anlatım. Teşekkürler.

  9. Slm, hocam kodlar mükemmel çok işime yaradı fakat benim bir sorunum var bir türlü çözemedim. Resimleri aynı sayfada listeletebiliyoruz ama ben kodlarda dizini değiştirdim index.php dosyasının bulunduğu yani aynı dizindeki resimleri listelettim. Tabi upload dizinini de aynı yaptım. Yalnız resimler listelenirken aynı zamanda aynı klasör içindeki .php uzantılı dosyaları da listeliyor ve sağında yine sil yazısı var. Dosya dizinini değiştirmek istemiyorum. Mümkünse aynı klasördeki sadece resim dosyalarını listeletsin istiyorum, lütfen yardımcı olur musunuz?

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla Php
Kapat