2016-05-05 3 views
2

Это сводит меня с ума! Я не могу понять, почему ajax не отправляет файл в php, есть ли кто-нибудь, кто может понять? Вот код:PHP и AJAX FormData не сообщается

----- ----- HTML

<input id="mmSelectedDoc" name="selectedFiles[]" type="file" multiple></input> 

----- JS -----

mmSingFile = (document.getElementById("mmSelectedDoc").files)[0]; 

    var mmFilesData = new FormData(); 

    mmFilesData.append("selectedFiles[]", mmSingFile, encodeURIComponent(mmSingFile.name)); 

    var x=new XMLHttpRequest(); 
    x.onreadystatechange = function(e){ 
     if (x.readyState==4 && x.status==200){ 
      console.log(x.responseText); 
     } 
    } 
    log(mmFilesData.get("selectedFiles[]")); 
    x.open("POST","uploader.php", true); 
    x.setRequestHeader("Content-type", "multipart/form-data"); 
    x.send(mmFilesData); 

----- PHP -----

var_dump($_GET); 
var_dump($_POST); 
var_dump($_FILES); 
die(); 

, когда я войти mmFilesData.get (...) перед отправкой, я могу видеть, что есть файл внутри, но, как журнал на onreadystatechange = 4 есть только пустые массивы. Если изменить тип содержимого для приложения/х-WWW-форм-urlencoded я получаю от должности var_dump результат, как этот:

["-----------------------------172450022319283172571100694258 

Content-Disposition:_form-data;_name"]=> 
    string(813) ""selectedFiles[]"; filename="10434360_995996657086820_5574771356675124169_n.jpg" 

Content-Type: image/jpeg 

��here's in ascii the file content�� 

Что происходит ??? Спасибо вам всем!

ответ

0

Не устанавливайте тип содержимого на свой объект xhr при отправке объекта formdata.
Не шифруйте uri имя файла в функции добавления.

+0

GREAT !!!!! Ты один! Спасибо!!!!!!!!! –

Смежные вопросы