v2.5.2
Giriş yap

Dosya Yükleme Sorunu (PHP)

rennie
1,277 defa görüntülendi
<?php
include_once('../config.php');

    
    // klasör oluştur
        $kLasorAdi = uniqid().date("dmY");
        $old = umask(0);
        mkdir("../uploads/".$kLasorAdi, 0777);
        umask($old);
    // klasör oluştur
 
if(!empty($_FILES['files'])){
    $n=0;
    $s=0;
    $prepareNames   =   array();
    foreach($_FILES['files']['name'] as $val)
    {
        $infoExt        =   getimagesize($_FILES['files']['tmp_name'][$n]);
        $s++;
        $filesName      =   str_replace(" ","",trim($_FILES['files']['name'][$n]));
        $files          =   explode(".",$filesName);
        $File_Ext       =   substr($_FILES['files']['name'][$n], strrpos($_FILES['files']['name'][$n],'.'));
         
        if($infoExt['mime'] == 'image/gif' || $infoExt['mime'] == 'image/jpeg' || $infoExt['mime'] == 'image/png' || $infoExt['mime'] == 'image/jpg')
        {
            $srcPath    =   '../uploads/'.$kLasorAdi.'/';
            $fileName   =   $s.rand(0,999).time().$File_Ext;
            $path   =   trim($srcPath.$fileName);
            if(move_uploaded_file($_FILES['files']['tmp_name'][$n], $path))
            {
                $prepareNames[] .=  $fileName; //need to be fixed.
                $Sflag      =   1; // success
            }else{
                $Sflag  = 2; // file not move to the destination
            }
        }
        else
        {
            $Sflag  = 3; //extention not valid
        }
        $n++;
    }
    if($Sflag==1){
        echo '{Images uploaded successfully!}';
    }else if($Sflag==2){
        echo '{File not move to the destination.}';
    }else if($Sflag==3){
        echo '{File extention not good. Try with .PNG, .JPEG, .GIF, .JPG}';
    }
 
    if(!empty($prepareNames)){
        $count  =   1;
        foreach($prepareNames as $name){
            $data   =   array(
                            'img_name'=>$name,
                            'img_order'=>$count++,
                        );
            $db->insert(TB_IMG,$data);
        }
    }
}
?>

PHP ile çoklu resim yükleme üzerine çalışıyorum, ama bir sorun var.
Resimleri yüklerken uzantısı küçük harf ile olursa .jpg, .png gibi belirttiğim klasöre yüklüyor,
ama uzantısı .JPG, .PNG olursa büyük şekilde yüklemiyor, nasıl çözebilirim ?

Cevap yaz
Cevaplar (11)
rennie
1185 gün önce

Bu sefer büyük formatlı dosyaları yüklüyor (PNG,JPG) ama tek tek. Multiple olmuyor. Nerede hata yapıyorum.

<?
 
require 'class.upload.php';
	
$images = array();
foreach ($_FILES['YuklenenResimler'] as $k => $l) {
	foreach ($l as $i => $v) {
		if (!array_key_exists($i, $images))
		$images[$i] = array();
		$images[$i][$k] = $v;
	}
}

	if(isset($_POST["submit"])){
	// klasör oluştur
		$yeniklasor = uniqid();
		$old = umask(0);
		mkdir("portfoy/".$yeniklasor, 0777);
		umask($old);
	// klasör oluştur
	foreach ($images as $image){
		$Atlet = new VerotUploadUpload($image);
		if ($Atlet->uploaded) {
			$Atlet->file_new_name_body = substr(base64_encode(uniqid(true)), 0, 10);			
			$Atlet->image_convert = jpg;
			$Atlet->image_resize = true;
			$Atlet->image_ratio_crop = true;
			$Atlet->image_x = 200;
			$Atlet->image_y = 100;
			$Atlet->allowed = array('image/*');
			$Atlet->Process("portfoy/".$yeniklasor."/");
			if ($Atlet->processed) {
				echo 'ok';
			} else {
				echo $Atlet->error;
			}
				$Atlet-> Clean();
			} else {
				echo $Atlet->error;
			}
		}
	}
?>
<form method="post" action="" enctype="multipart/form-data">
	<input type="file" name="YuklenenResimler[]" multiple />
	<input type="submit" name="submit" value="Yükle" />
</form>
rennie
1185 gün önce

Olmuyor, yada ben yapamıyorum. Veron'u da denedim. Hala dosya adı images.JPG ise yüklemiyor, küçük ise yükleme yapıyor.

myazar
1186 gün önce

Dosya uzantısını fileExt değişkenine dosya adından alana kadar mimetypen belirle.($infoExt['mime'])


switch($infoExt['mime']){
    case 'image/gif':
        $fileExt='.gif';
    break;
    case 'image/jpg':
        $fileExt='.jpg';
    break;
    case 'image/jpeg':
        $fileExt='.jpeg';
    break;
    default:
        throw new Exception('Geçersiz dosya formatı');
    break;
}

qplot
1187 gün önce

verot ıle yapacagın sey bu kadar basıt ne kasıyorsun kendını he ogrenmek ıcın yapıyorum dıyorsan ok

verot senın ıcın her kontrolu yapıyor ınce ayarlar ıle sadece bu dosylar yuklensınde dıyorsun dıgerının alayı yuklenemez

$handle = new VerotUploadUpload($_FILES['image_field']);
if ($handle->uploaded) {
  $handle->file_new_name_body   = 'image_resized';
  $handle->image_resize         = true;
  $handle->image_x              = 100;
  $handle->image_ratio_y        = true;
  $handle->process('/home/user/files/');
  if ($handle->processed) {
    echo 'image resized';
    $handle->clean();
  } else {
    echo 'error : ' . $handle->error;
  }
}
rennie
1187 gün önce

Cevap için teşekkür ederim. Deneyip sonucu paylaşacağım...

mtvartemis
1188 gün önce

kodalrını fazla incelemedim ama phpde pathinfo fonksiyonu işine yarar

//elimizde resim.png dosyası var
echo $dosyaadi = pathinfo($_FILES["file"]["name"], PATHINFO_FILENAME); //çıktı şu şekilde olur resim
echo $dosyauzanti = pathinfo($_FILES["file"]["name"],PATHINFO_EXTENSION); //çıktı şu şekilde olur .png
//eğer hep büyük harfli uzantı geliyorsada şöyel bir şey yapabilirsin ve veri tabanı işlemi için
echo $dosyaname = $dosyaadi.strtolower($dosyauzanti); //çıktı şu şekilde olur resim.png
rennie
1191 gün önce

Maalesef bu şekilde denemiştim olmadı.

ferixinder
1191 gün önce

Evet bu şekilde sorun çözülmesi gerekiyor

rennie
1191 gün önce
<?php
    $fileName   =   $s.rand(0,999).time().mb_strtolower($File_Ext);
?>

bu şekilde mi yapmam gerekiyor ?

ferixinder
1191 gün önce

Uzantıyı aldıktan sonra mb_strtolower() fonksiyonu ile uzantıyı küçük harfe çevirebilirsin geçici olarak işini görür.

qplot
1191 gün önce