Yüklenen Dosyayı Yakalayamıyorum. ?
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.?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (10)
ş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.
neyi yapamadın kardeşim yardımcı olalım tam olarak anlatırsan.
bu linke tıkla
Bende bayadır uğraşıyorum kendi blogumda fakat bir ilerleme kaydedemedim herhangi bir şekilde yol kadetersem bu yorumu editleyecehim.
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.
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 :)
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 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ş :)
<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
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>