当前位置: 首页 > 面试题库 >

使用FormData上传PHP AJAX图像

齐昆
2023-03-14
问题内容

我对jQuery和Ajax函数还比较陌生,但是过去几天一直在使用Ajax表单。我在尝试上传图像时遇到文件上传问题。在寻找资源时,我找不到任何有用的东西,因为它们似乎过于复杂,毫无意义,没有任何解释,这无助于我进一步学习。

我已经编写了以下代码来处理Ajax中的图片上传:

$(function() {
    $('.input_photo').on("change",function() {                              
        var formData = new FormData($('form.upload-form'));

        $.ajax({
            url: "upload.php",
            type: "POST",
            data: formData,
            success: function (msg) {
                alert(msg)
            }
        });
    });
});

这向upload.php文件发送了一个请求,但是没有发送数据,基本上我的表单实际上是这样的:

<form class="upload-form">
     <input type="file" name="input_photo" class="input_photo" />
</form>

似乎没有任何数据在标头中传递,我认为我将通过PHP使用$_POST['data']array或$_FILES?访问它。有更多知识的人请帮忙解释一下,进一步了解这一点将非常高兴。谢谢。


问题答案:

这将适用于一个或多个文件。

$('input:file').on('change', function () {

 var data = new FormData();

 //Append files infos
 jQuery.each($(this)[0].files, function(i, file) {
     data.append('file-'+i, file);
 });

 $.ajax({  
     url: "my_path",  
     type: "POST",  
     data: data,  
     cache: false,
     processData: false,  
     contentType: false, 
     context: this,
     success: function (msg) {
          alert(msg);
      }
  });
});

然后

$_FILES['file-0']
$_FILES['file-1']
[...]


 类似资料:
  • 问题内容: 我喜欢在PHP中使用Codeigniter Framework和JQuery AJAX上传图像,而无需重定向页面。当我上传图像时,它重定向到控制器区域,并且值未插入数据库,ajax响应也不会出现, 任何人都可以解决我的问题吗? 这是我的视野。 这是我的Ajax编码 这是我的控制器编码… 这是我的模型编码 问题答案: 试试这个。 工作正常 -HTML表单- 阿贾克斯- 只需在ajax中设

  • 本文向大家介绍ajax使用formdata上传文件流,包括了ajax使用formdata上传文件流的使用技巧和注意事项,需要的朋友参考一下 今天在做项目的时候涉及到了ajax上传文件流的问题,由于是移动端两个页面的两个表单使用同一个ajax地址进行上传数据给后台,数据中涉及到了不同类型的input,其中存在了file类型的input,导致无法使用表单序列化直接传输数据。 只存在传递一般的参数时,可

  • 本文向大家介绍JS中使用FormData上传文件、图片的方法,包括了JS中使用FormData上传文件、图片的方法的使用技巧和注意事项,需要的朋友参考一下 关于FormData XMLHttpRequest Level 2添加了一个新的接口  ---- FormData 利用FormData对象,可以通过js用一些键值对来模拟一系列表单控件,可以使用XMLHttpRequest的 send( )

  • 这段javascript代码如下所示。注意,当file input元素的值发生变化时(即,一旦他们选择了要上传的文件),就会调用该命令 请原谅所有控制台日志。它的目的是显示输出和调试。 您将看到,我还附加了一个username字段,只是为了测试帖子是否在控制器中使用了一些完整的数据。的确是。以下是记录数组的输出: 有什么想法吗??

  • 问题内容: 当我使用XMLHttpRequest时,使用可以正确上传文件。但是,当我切换到时,我的代码将中断。 这是有效的原始代码: 这是我失败的尝试: 我究竟做错了什么?如何使用AJAX正确上传文件? 问题答案: 您必须添加方法,以便jQuery不会更改标头或数据(这会破坏当前代码)。

  • 问题内容: 我需要使用Laravel 5.1作为后端将图像和视频文件上传到Angular应用程序中的服务器。所有Ajax请求都需要首先发送到Laravel控制器,并且我们在这里有代码说明文件到达那里后如何处理。以前,我们已经完成了普通的HTML表单以将文件上传提交到控制器,但是在这种情况下,我们需要避免刷新表单的页面,因此我尝试通过Angular在Ajax中进行尝试。 我需要将以前通过HTML表单