2017-06-13 147 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