2013-12-10 4 views
1

Я пытаюсь загрузить файл с использованием AJAX и PHP.Загрузить файл с помощью PHP с Ajax

я уже сделать это с помощью формы:

<form action="upload.php" method="POST"> 
<input type="file" id="idFile" name="fileName" /> 
</form> 

И это работает очень хорошо, но мне действительно нужно сделать это с помощью AJAX.

У меня уже есть сценарий php, который загружает файл. Я хочу, чтобы этот скрипт был исключен с AJAX. Я хочу, чтобы моя функция Javascript, чтобы сделать что-то вроде этого:

function uploadFile(file) { 
    var url = "upload.php?file="+file; //<-- Can I do this? 

    xmlhttp = GetXmlHttpObject(); 
    if (!xmlhttp) { 
     alert ("Browser does not support HTTP Request"); 
     return; 
    } 
    var xml = xmlhttp; 
    xmlhttp.onreadystatechange = function() { 
     if (xml.readyState == 4) { 
     alert("THE FILE WAS UPLOADED"); 
     } 
    }; 
    xmlhttp.open("GET",url,true); 
    xmlhttp.send(null); 

    return true; 
} 

Мой вопрос: ли Возможное передать переменную типа файла таким образом? Если нет, то каким способом я могу передать переменную файла? Могу ли я использовать document.getElementById("idFile").value?

Я надеюсь, что кто-то может мне помочь Спасибо!

+0

Это может помочь: http://stackoverflow.com/questions/1686099/file-upload-via-ajax-within-jquery –

+1

@ Fred-II- Спасибо, я знаю, я не writte ее полной потому что я уже так хорошо работаю. – mauguerra

ответ

1

Я решил проблему таким образом.

<form method="POST" id="formLic" name="formLic" enctype="multipart/form-data"> 
    <label for="lnumero">Número: </label> 
    <input type="text" id="lnumero"/> 
    <label for="larchivo">Archivo: </label> 
    <input type="file" id="larchivo"/> 
</form> 
<script> 
     $(document).ready(function() { 
     $("form#formLic").submit(function(){ 
      var formData = new FormData($(this)[0]); 
      $.ajax({ 
       url: "nuevo/uploadInsert.php", // file where you save your data and files 
       type: 'POST', 
       data: formData, 
       async: false, 
       cache: false, 
       contentType: false, 
       processData: false, 
       success: function (result) { 
        // action or message 
       } 
      }); 
      return false; 
     }); 
    }); 
</script> 
3

Вы не можете загружать файлы через AJAX. Вместо этого вы должны использовать скрытый iframe.

Загрузка файла пользователем ajax представлена ​​в объекте XHR2 FormData, но это не поддерживается старыми браузерами. См. Браузеры compatibility table.

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