v2.5.2
Giriş yap

Php upload işleminde klasörün içine resim yolu verme sorunu

yazilimyolcusu
180 defa görüntülendi

Kök dizindeki resimler klasörüne çoklu resim yükleme ve insert işlemi yapmaya çalışıyorum. Resimleri veri tabanına girebiliyorum ve resimler klasörüne upload edebiliyorum. Ama yüklediğim resimleri bir klasöre göndermek istiyorum. Mesela, 1.jpg, 2.jpg, 3.jpg diye üç tane resim var. Bunları insert ettiğimde resimler klasörünün içinde bir klasör oluşacak, bu klasörün adı ilan numarası ile aynı olacak ve içine upload olacak. Kodlar aşağıda.

if(isset($_FILES['dosya'])) {
    $_POST['ilannumarasi'];

    for($i=0; $i<count($_FILES['dosya']['name']); $i++) {
        $dosyaadi[] = basename($_FILES['dosya']['name'][$i]);
        $yuklenendosya = $_FILES['dosya']['tmp_name'][$i];
        $hedefyol = "../../images/yenieklenenler/" . $dosyaadi[$i];
        move_uploaded_file($yuklenendosya, $hedefyol);
    }
}
busradmrts
268 gün önce

Bu işlemi gerçekleştirmek için, ilk olarak resimlerin yükleneceği klasörün var olup olmadığını kontrol etmeli ve gerekirse bu klasörü oluşturmalısınız.
Bu işlemi mkdir() fonksiyonu ile yapabilirsiniz.

if(isset($_FILES['dosya'])) {
    $ilanNumarasi = $_POST['ilannumarasi']; // İlan numarası değerini bir değişkene atalım.

    $klasorYolu = "../../images/yenieklenenler/";
    if (!file_exists($klasorYolu)) { // Eğer ilgili klasör yoksa,
        mkdir($klasorYolu, 0777, true); // Klasörü oluştur. 0777, klasörün izinlerini ayarlar ve true, gerektiğinde çoklu klasör yapısını oluşturur.
    }

    for($i = 0; $i < count($_FILES['dosya']['name']); $i++) {
        $dosyaAdi = basename($_FILES['dosya']['name'][$i]);
        $yuklenenDosya = $_FILES['dosya']['tmp_name'][$i];
        $hedefYol = $klasorYolu . "/" . $dosyaAdi; 
        
        if(move_uploaded_file($yuklenenDosya, $hedefYol)) { // Dosyayı hedef yola taşıyoruz.
            // Burada, başarılı bir şekilde yükleme yapıldıktan sonra veritabanı işlemlerini gerçekleştirebilirsiniz.
        } else {
            // Yükleme başarısız olduysa, hata mesajı gösterebilirsiniz.
        }
    }
}