2017-06-13 153 views
0

我一直在努力想知道上傳圖像的問題是什麼。嘗試了幾種方法,但無法在Ajax中取得成功。如果我不使用Ajax就可以上傳文件,它可以正常工作:我是AJAX的新手,因此可能會漏掉一些技巧。使用XMLHttpRequest通過Ajax上傳文件

此外,完整的表單與ajax完美協作,但$ _FILES正在創建一個問題。錯誤是:

注意:未定義指數:上傳在Z:\ XAMPP \ htdocs中\ webseite \上線70

什麼可以原因a.php只會?

我知道有幾個職位相關的,但沒有匹配的XMLHttpRequest。

謝謝

這是代碼。

HTML文件有HTML代碼和Javascript/AJAX代碼。 第二個文件:a.php有PHP代碼。

<div class="form-group mygroup"> 
      <label for="name"> Upload (optional) </label> 
      <input type="file" class="form-control" name="Upload" id="Upload"> 

</div> 

<script> 
    var xhttp = new XMLHttpRequest(); 
     var Upload_rek=document.getElementById('Upload').value; 

     xhttp.open('GET', 'a.php?&Upload_var='+Upload_rek+'&Senden_var='+Senden_rek, true); 
     xhttp.send(); 
</script> 

<?php 
$target = "uploads/".basename($_FILES['Upload']['name']); 
?> 
+0

https://www.formget.com/ajax-image-upload-php/ –

+0

https://stackoverflow.com/questions/23980733/jquery-ajax-file-upload-php –

+0

這兩個鏈接都不是與我的代碼匹配。 – Nabeel

回答

2

你需要使用FORMDATA

var formData = new FormData(); 
formData.append(file, file); 
xhr.send(formData); 

在你當前的代碼狀態,你不發送/上傳文件到服務器的所有附加文件。

+0

所以使用FormData是唯一的方法? 通過使用PhP,相同類型的代碼工作。但不在Ajax中。 所以根據你的回答,:用ajax,需要使用FormData() – Nabeel

+0

是的,你必須把文件發送到服務器,以便PHP能夠訪問它。如果是圖片,pdf,文本文件等,您可能可以將其轉換爲base64字符串並將其作爲標準的GET/POST值發送,但您寧願堅持使用FormData – mele

+0

感謝您的解釋 順便說一下。它對我來說看起來更有趣,其他變量可以完美地與這種編碼風格一起工作,但上傳文件不起作用。 所以認爲,可能會失去一些東西,但不是案件。 我現在將通過FormData工作來解決這個問題。 希望最好:) – Nabeel