2016-04-13 16 views
0

Resim dosyasını yüklemeye çalışıyorum. PHP'de dosya yükleme, ajax hata gösteriyor

Bu

benim Html olduğunu

<form class="form-horizontal" role="form" enctype="multipart/form-data"> 
    <div class="form-group"> 
     <label for="a" class="control-label col-sm-2">A:</label> 
     <input type="text" class="form-control col-sm-10" id="a"> 
    </div> 
    <div class="form-group"> 
     <label for="b" class="control-label col-sm-2">B:</label> 
     <input type="text" class="form-control col-sm-10" id="b"> 
    </div> 
    <div class="form-group"> 
     <label for="c" class="control-label col-sm-2">C:</label> 
     <input type="text" class="form-control col-sm-10" id="c"> 
    </div> 
    <div class="form-group"> 
     <label for="d" class="control-label col-sm-2">D:</label> 
     <input type="text" class="form-control col-sm-10" id="d"> 
    </div> 
    <div class="form-group"> 
     <label for="fupload" class="control-label col-sm-2">Upload image:</label> 
     <input type="file" class="form-control col-sm-10" id="fupload"> 
    </div> 
    <button type="button" class="btn-lg btn-primary" style="margin-left:200px" id="new_save" onclick='save_all();'>Save</button> 
</form> 

My javascript kodu

var a= _("a").value; //the _ function returns document.getElementById(x) 
var b = _("b").value; 
var c = _("c").value; 
var d = _("d").value; 

var file_data = $("#fupload").prop("files")[0]; 
var fileup = new FormData();     
fileup.append("file", file_data) 

var ajax = ajaxObj("POST", "./phps/saveall.php"); 
ajax.onreadystatechange = function() { 
     alert(ajax.responseText); 
    } 
ajax.send("a="+a+"&b="+b+"&c="+c+"&d="+d+"&fileup="+fileup); 

Son olarak benim PHP ben bu değişkenler reklamı çalıştırdığınızda

$a = preg_replace('#[^a-z0-9()., ]#i', '', $_POST['a']); 
    $b = preg_replace('#[^a-z0-9()., ]#i', '', $_POST['b']); 
    $c= htmlentities($_POST['c']); 
    $c= mysqli_real_escape_string($db_conx, $c); 
    $d = htmlentities($_POST['d']); 
    $d = mysqli_real_escape_string($db_conx, $d); 
    $fup = $_POST['fileup']; 
    //processing a-d 
    //this is where the problem comes 
    move_uploaded_file($_FILES[$fup]['tmp_name'], '../lyrics/'.$a.'.png'); 

ince işlenmiş alır ancak dosya almaz yüklendi, ancak şu hatayı gösteriyor

"Notice: Undefined index: [FormData nesne]"

nasıl çözeriz diye?

+0

bir 'print_r ($ _ POST)' ve 'print_r ($ _ FILES) yapmak' ve emin '$ _POST [ 'fileup']' o fileup görünüyor $ _FILES' – cmorrissey

+0

'kilit bir değil mi yapmak $ _FILES'de anahtar ancak "$ _POST" içinde bir anahtardır. Ayrıca görüntü verisini sadece resme fakepath içermiyor gibi görünüyor –

+0

ajaxObj' nedir? – Musa

cevap

0

FORM'unuza yüklenen bir nesne (veya daha fazlası) içereceğini bildirerek başlayın. Buradan daha fazla

<form enctype="multipart/form-data" action="...put your URL here..." method="POST"> 

Okuma:

http://php.net/manual/en/features.file-upload.post-method.php

+0

Ben enctype = "multipart/form-data" 'ekledim. Ben ajax ile geçmek istiyorum böylece sonuç php döndürdü sonuçta sayfada bazı değişiklikler yapabilirsiniz. ve bu yüzden –

0

mesele buradadır: Sen bir dizeye bir FormData nesnesi eklemek için çalışıyoruz

ajax.send("a="+a+"&b="+b+"&c="+c+"&d="+d+"&fileup="+fileup); 

. Bunun yerine, tüm diğer değerleri FormData nesnesine ekleyip onu göndermelisiniz.

var fileup = new FormData();     
fileup.append("file", file_data); 
fileup.append("a", a); 
fileup.append("b", b); 
fileup.append("c", c); 
fileup.append("d", d); 

ajax.send(fileup); 
+0

eylem özniteliğini eklemedim. Teşekkürler, php'de $ _POST ["a"] 'ı denedim ama işe yaramıyor. _Undefined dizini diyor: a_. Php –

+0

'daki değerleri nasıl alabilirim? Print_r ($ _ POST) yaptım ve bu geldi Array ([------ WebKitFormBoundaryaBJCF5t2LUcnvGBI Content-Disposition: _form-data; _name] => "a" atext ------ WebKitFormBoundaryaBJCF5t2LUcnvGBI Content-Disposition: form-data; name = "b" btext ------ WebKitFormBoundaryaBJCF5t2LUcnvGBI Content-Disposition: form-veri; ad = "c" ctext ------ WebKitFormBoundaryaBJCF5t2LUcnvGBI İçerik -Disposition: form-data; name = "d" dtext ------ WebKitFormBoundaryaBJCF5t2LUcnvGBI Content-Disposition: form-data; name = "dosya"; filename = "file.png" İçerik Türü: image/png PNG IHDReFZ). –

+0

Gönderme çağrısından önce JavaScript’te, 'ajax.setRequestHeader ('İçerik türü', 'multipart/form-data');' nı tekrar deneyin, ardından PHP yazısında nelerin olduğunu görün. – MrCode