Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用XMLHttpRequest通过Ajax上传文件_Php_Ajax - Fatal编程技术网

Php 使用XMLHttpRequest通过Ajax上传文件

Php 使用XMLHttpRequest通过Ajax上传文件,php,ajax,Php,Ajax,我一直在努力想知道上传图片会有什么问题。尝试了几种方法,但在Ajax中没有成功。如果我不使用Ajax上传文件,效果很好:我是Ajax新手,因此可能会错过一些技巧 此外,完整的表单可以完美地与ajax配合使用,但是$u文件会产生一个问题。错误是: 注意:未定义索引:在第70行的Z:\xampp\htdocs\webseite\a.php中上载 原因可能是什么 我知道有几篇文章与此相关,但没有一篇与XMLHttpRequest相匹配 谢谢 这是代码 HTML文件包含HTML代码和Javascript

我一直在努力想知道上传图片会有什么问题。尝试了几种方法,但在Ajax中没有成功。如果我不使用Ajax上传文件,效果很好:我是Ajax新手,因此可能会错过一些技巧

此外,完整的表单可以完美地与ajax配合使用,但是$u文件会产生一个问题。错误是:

注意:未定义索引:在第70行的Z:\xampp\htdocs\webseite\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']);
 ?> 

上传(可选)
var xhttp=newXMLHttpRequest();
var Upload_rek=document.getElementById('Upload').value;
xhttp.open('GET','a.php?&Upload_var='+Upload_rek+'&Senden_var='+Senden_rek,true);
xhttp.send();

您需要使用FormData附加文件

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

在当前代码状态下,您根本不会将文件发送/上载到服务器。

您需要使用FormData附加文件

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

在当前代码状态下,您根本不会将文件发送/上载到服务器。

两个链接都与我的代码不匹配。两个链接都与我的代码不匹配。因此,使用FormData是唯一的方法??通过使用PhP,同样的代码也可以工作。但在Ajax中不是这样。因此,根据您的回答:使用ajax,需要使用FormData()是的,您必须将文件发送到服务器,以便PHP能够访问它。如果是图像、pdf、文本文件等,您可能可以将其转换为base64字符串,并将其作为标准GET/POST值发送,但您还是坚持使用FormData谢谢您的解释。在我看来,更有趣的是,其他变量与这种编码方式完美配合,但上传文件不起作用。所以我想,可能遗漏了一些东西,但不是一个案例。我现在将通过FormData解决此问题。。希望是最好的:)所以使用FormData是唯一的方法??通过使用PhP,同样的代码也可以工作。但在Ajax中不是这样。因此,根据您的回答:使用ajax,需要使用FormData()是的,您必须将文件发送到服务器,以便PHP能够访问它。如果是图像、pdf、文本文件等,您可能可以将其转换为base64字符串,并将其作为标准GET/POST值发送,但您还是坚持使用FormData谢谢您的解释。在我看来,更有趣的是,其他变量与这种编码方式完美配合,但上传文件不起作用。所以我想,可能遗漏了一些东西,但不是一个案例。我现在将通过FormData解决此问题。。希望一切顺利:)