v2.5.2
Giriş yap

Yüklenen Dosyayı Yakalayamıyorum. ?

aydinkeskin
900 defa görüntülendi

php ile post ettiğim dosya yı yakalayamıyorum

php tarafı

<?php
			
			if(isset($_FILES['dosya'])){
			   $hata = $_FILES['dosya']['error'];
			   if($hata != 0) {
					echo '<script type="text/javascript">sweetAlert("Uyarı...", "Yüklenirken Bir Hata Gerçekleşti.", "error");</script>';
			   } else {
				  $boyut = $_FILES['dosya']['size'];
				  if($boyut > (1024*1024*100)){ 
					echo '<script type="text/javascript">sweetAlert("Uyarı...", "file 100 MB den büyük olamaz.", "error");</script>';
				  } else {
					 $tip = $_FILES['dosya']['type'];
					 $isim = $_FILES['dosya']['name'];
					 $uzanti = explode('.', $isim);
					 $uzanti = $uzanti[count($uzanti)-1];
					 if( $uzanti != 'jpg' || $uzanti != 'jpeg' || $uzanti != 'png' || $uzanti != 'pdf' || $uzanti != 'ai'  || $uzanti != 'cdr' || $uzanti != 'zip' || $uzanti != 'rar' ) {
						echo '<script type="text/javascript">sweetAlert("Uyarı...", "Bu file Türü Yüklemek için Uygun Değil", "error");</script>';
					 } else {
						$file = $_FILES['dosya']['tmp_name'];
						copy($file, '/uploads/dosya/' . $_FILES['dosya']['name']);
						echo '<script type="text/javascript">sweetAlert("Uyarı...", "file Yüklendi", "success");</script>';
					 }
				  }
			   }
			}else{
				echo '<script type="text/javascript">sweetAlert("Uyarı...", "file Yüklemeyi Boş Geçemezsiniz", "error");</script>';

			}
?>

burdan gönderiyorum

$(document).ready(function () {
	$("#dosyaBTN").click(function(e){
		e.preventDefault();
		$.ajax({
			type:'POST', 
			url:'/ajax/dosya-form.php',
			data: $('#dosya-form').serialize(),
			success: function (data) {
				$('#dosyasonuc').html(data);
			}
		});
	});
});
								<div id="dosyasonuc"></div>  			


						<form   method="post" action="" id="dosya-form" onsubmit="return false;" enctype="multipart/form-data"> 
            <div class="contact-area mtb-60px">
                <div class="container"> 
                    <div class="custom-row-2">
 
                        <div class="col-lg-5 col-md-7">
                            <div class="contact-form">
                                <div class="contact-title mb-30">
                                    <h2>Teklif İste</h2>
                                </div>						

                                     <div class="row contact-form-style">
                                        <div class="col-lg-12">
                                            <input name="ad" placeholder="Lütfem Adınızı Giriniz *" type="text" />
                                        </div>
                                        <div class="col-lg-12">
                                            <input name="soyad" placeholder="Lütfem Soyadınız Giriniz *" type="text" />
                                        </div>
                                        <div class="col-lg-12">
                                            <input name="email" placeholder="E-Mail Adresiniz *" type="email" />
                                        </div>
                                        <div class="col-lg-12">
                                            <input name="telefon" placeholder="Telefon Numaranız *" type="text" />
                                        </div>  
                                        <div class="col-lg-12">
                                            <input name="urunadi" placeholder="Teklif İstenen Ürün *" type="text" />
                                        </div>  
                                    </div>  
                            </div>
                        </div>
                        <div class="col-lg-7 col-md-7">
                            <div class="contact-form ">
                                <div class="contact-title mb-30">
                                    <h2>Teklif İstenen Ürünün Özellikleri ve Detayları</h2>
                                </div> 
                                     <div class="row contact-form-style"> 
										<input type="hidden" name="CSRFtokenDosya" value="<?php echo $_SESSION['CSRFtokenDosya']; ?>" />
                                        <div class="col-lg-12">
										<p style="margin-bottom:10px;"> Max 100 MB Dosya Yükleyebilirsiniz. </p>
                                           <input type="file" name="dosya">
                                        </div>
										<hr>
                                        <div class="col-lg-12">
                                            <textarea name="icerik" placeholder="Mesajınız *"></textarea>
                                            <button class="submit"  id="dosyaBTN" type="submit">Gönder</button>
                                        </div>
                                    </div> 
                            </div>
                        </div>
                    </div>
                </div>
            </div>

                                </form>
 

her şekilde bana dosya yok uyarısı veriyor

print ile kontol ettiğimdede boş dönüyor.

anlamadım gitti nerde hata yapıyorum sweetalert ile ilgili olduğunu düşünüyorum biraz fakat pek de ihtimal vermiyorum

php tarafında bir sorun yok kontrol ettim de js özürlü biri olarak belki o kısımlarda hata yapmış olabilirim.

yardımcı olabilirmisiniz.?

Cevap yaz
Cevaplar (10)
aydinkeskin
1436 gün önce

şu şekilde şimdilik halledilmiş gibi duruyor..

$(document).on("submit", "#dosya-form", function(event){ //infoForm id li form post edildiğinde
	event.preventDefault();
	$.ajax({
		url:'/ajax/dosya-form.php',
		type: "POST",             
		data: new FormData(this),
		dataType: "json",
		contentType: false,       
		cache: false,             
		processData:false, 
		success: function(data) {
			// alert(data);  
			// console.log(data['data']);  
			// $('#dosyasonuc').html(data);
			$('#dosyasonuc').html(data["result"]);
		}
	});
});
		$dizi['result'] = "";
		if(isset($_FILES['dosya']['name'])){ 
			if($_FILES['dosya']['size'] < (1024*1024*100) ){  
				$extension_array = array('png', 'jpeg', 'jpg', 'pdf', 'ai', 'cdr', 'zip','rar'); 
				$extension = pathinfo($_FILES['dosya']['name'])['extension'];  
				if (in_array($extension,$extension_array)){  
					$user_photo = $_FILES['dosya']['name'];  
					$upload_status = move_uploaded_file($_FILES['dosya']['tmp_name'], '../uploads/dosya/'.$user_photo);  
					if ($upload_status){  
						$file_result = '<script type="text/javascript">sweetAlert("Başarılı...", "İşleminiz Gerçekleşti.", "success");</script>';
		
					}else{
						$file_result = '<script type="text/javascript">sweetAlert("Uyarı...", "Yüklenirken Bir Hata Gerçekleşti.", "error");</script>';
					}
				}else{
					$file_result = '<script type="text/javascript">sweetAlert("Uyarı...", "Bu file Türü Yüklemek için Uygun Değil", "error");</script>';
				}
			}else{
				$file_result = '<script type="text/javascript">sweetAlert("Uyarı...", "file 100 MB den büyük olamaz.", "error");</script>';
			}
			$dizi['result'] .= ' - Dosya Yukleme Durumu: '.$file_result;
		}
		$dizi['data'] = $_POST;
		echo json_encode($dizi);

belki bazı arkadaşlara lazım olur tabi bir kaç değişiklik yapılmasıda gerekiyor aynı isimli dosya kontrolü

yeni isim belirleme vb gibi.

aydinkeskin
1349 gün önce

neyi yapamadın kardeşim yardımcı olalım tam olarak anlatırsan.

ilhanaga01
1349 gün önce

bu linke tıkla
Bende bayadır uğraşıyorum kendi blogumda fakat bir ilerleme kaydedemedim herhangi bir şekilde yol kadetersem bu yorumu editleyecehim.

aydinkeskin
1433 gün önce

ya uzantı yakalayarak da yapabilirdim de eskiden bu işlerinden içinden gelen biri olarak mime type tanımı yoksa bu durumların rahatlıkla aşılacağınıda biliyorum öyle söylim :)

.;jpg
:.gif vb şekilde mime type yoksa rahatlıkla yiyordu öyle söylim.
o yüzden bana göre tipi de önemli bir durum.

qplot
1434 gün önce

ben dogadakiler.com.
projemde .gpx dosyasını bıle yukletıyorum
bak ne guzel demıssın applicaton/pdf formatı dıye her dosyanın kendıne has ısmı var :)

kodlara mudahele ederek ai de yuklerden cab da exe de korkama saldır kodlara bır sey olmaz :)

aydinkeskin
1435 gün önce

aslında uyuyormuş bir kaç saat önce mime type leri araştırken denk geldim :D

ai dosyalaranı applicaton/pdf ile gönderebiliyormuşuz :D

genel olarak sorun dosya yüklemekte değildi zaten js tarafında serialize ile file almadığı için sorun oluyordu

qplot
1435 gün önce

kolay gelsin :) ne diyim

neyi uymadı verot un merak ettım

aydinkeskin
1435 gün önce

qplot teşekkürler kardeşim
kendim hallettim
verot un içindeki bazı ayarlar yükleyeceğim dosyaya uymadı ekledim sonradan hepsinide yine js tarafından serialize ile gönderdiğim için boş gidiyordu

sonra js tarafını biraz daha araştırınca buldum kod tarafını değiştirdim hallettim şuan sorunsuz çalışıyor.

düz olsa yapardım zaten

sweetalert ile anlık hata versin diyor adam hem bilmiyor ama çok bilmiş :)

qplot
1436 gün önce

<div id="sonuc"></div>	
	
<form action="foto-islem.php" method="post" enctype="multipart/form-data" id="formad">
         
<input name="foto" type="file" id="fotolar" accept="image/*" />	
<button name="yukle" type="submit" id="yukle" >Yüklemeye Başla</button>
 
 
</form>

<script
  src="https://code.jquery.com/jquery-3.5.1.js"
  integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc="
  crossorigin="anonymous"></script> 
    <script src="http://malsup.github.com/jquery.form.js"></script> 	
<script>
	
          $(document).ready(function() { 
			$('#formad').on('submit', function(e) {
				e.preventDefault();
				$('#yukle').attr('disabled', ''); 
 				$("#sonuc").html('<div style="padding:10px"><img src="loading.gif" alt="Bekleyin"/><p>Yükleniyor Lütfen Bekleyin...</p></div>');
				$(this).ajaxSubmit({
 					target: '#sonuc',
					success:  afterSuccess  
				});
			});
        }); 

		function afterSuccess()  { 
			$('#formad').resetForm();  
			$('#yukle').removeAttr('disabled');  

		}  	
	
</script>	

ayrıca php verot kullan olmadı onlada alakalı örnek verelim

tayfunerbilen
1436 gün önce

jquery ajax'la doğrudan dosya upload yapılmıyor, pluginler yardımı ile yapabilirsin ben şunu kullanıyorum
http://malsup.com/jquery/form/

Bir tane javascript dosyası var sadece onu dahil edip şu şekilde kullanabilirsin, form içindeki tüm değerleri otomatik gönderiyor dosyalar dahil, url'i form action kısmında belirttiğin yere gönderiyor

<form id="form" action="/ajax/dosya-form.php" method="post"> 
    Dosya: <input type="file" name="dosya" /> 
    <button type="submit">Yükle</button>
</form>
<script>
    $('#form').submit(function() { 
        $(this).ajaxSubmit({
            success: function(response){
                // işlemler
            }
        });
        return false; 
    }); 
</script>