v2.5.2
Giriş yap

Php Resim Yükleme Filtre

Anonim
590 defa görüntülendi

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];
	 } 
}
okumusmr
969 gün önce

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;
}