Php Resim Yükleme Filtre
Merhabalar. Çoklu resim yüklemek istiyorum ve bu aşağıdaki kodu kullanıyorum gayet düzgün çalışıyor. Fakat resmin png jpg gif olarak filtrelenmesini ve 5mb dan fazla olmaması filtrelemesini yapamıyorum devamlı hata alıyorum. Kodu nereye eklemeliyim ?
$klasor="resimler";
$dosya_isim_sayi=count($_FILES['dosya']['name']);
for($i=0;$i<$dosya_isim_sayi;$i++){
if(!empty($_FILES['dosya']['name'][$i])){
$dosya_adi = $_FILES["dosya"]["name"][$i];
$uret=array("as","rt","ty","yu","fg");
$uzanti=substr($dosya_adi,-4,4);
$sayi_tut=rand(1,10000);
$yeni_ad=$uret[rand(0,4)].$sayi_tut.$uzanti;
move_uploaded_file($_FILES['dosya']['tmp_name'][$i],$klasor."/".$yeni_ad);
$url = $_FILES['dosya']['name'][$i];
$name = $_FILES['dosya']['name'][$i];
}
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
@okumusmr 5mb den küçükta atsam zip dosyasıda atsam hep else deki Dosya 5mb büyük olamaz uyarısını veriyor hiç bir işlem yapmıyor
Merhaba, sanırsam problemin uzantıyı düzgün alamadığın için. Aşağıdaki kodu deneyebilir misin ?
$dosya_isim_sayi = count($_FILES['dosya']['name']);
for ($i = 0; $i < $dosya_isim_sayi; $i++) {
if (!empty($_FILES['dosya']['name'][$i])) {
// $_FILES['dosya']['size'] değeri bit olarak gelmekte.
// 40000000 değeri 5 mb değerine eşit. Burayı daha farklı bir şekilde kurgulayabilirsin.
if ($_FILES['dosya']['size'] < 40000000) {
$dosya_adi = $_FILES["dosya"]["name"][$i];
$uzanti = pathinfo($dosya_adi, PATHINFO_EXTENSION);
$uret = array("as", "rt", "ty", "yu", "fg");
$sayi_tut = rand(1, 10000);
$izin_verilen_uzantilar = ['jpg', 'png', 'gif'];
if (in_array($uzanti, $izin_verilen_uzantilar)) {
$yeni_ad = $uret[rand(0, 4)] . $sayi_tut . '.' . $uzanti;
move_uploaded_file($_FILES['dosya']['tmp_name'][$i], $klasor . "/" . $yeni_ad);
$url = $_FILES['dosya']['name'][$i];
$name = $_FILES['dosya']['name'][$i];
} else {
echo 'Uzantı hatası';
exit;
}
} else {
echo 'Dosya 5mb büyük olamaz';
}
}
}
Ayrıca isim için farklı bir function istersen benim kullandığım fonksiyonu da aşağıya bırakıyorum.
function generateRandomString($length = 10)
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}