繁体   English   中英

使用ajax将多个文件附件发送到php文件

[英]Send multiple file attachments to php file using ajax

我在表单中有以下html代码:

<input type="file" id="attachments" name="attachments" multiple>

我已经有一个javascript函数,使用ajax处理表单的onsubmit,但不处理上传的文件。

这是我的javascript函数的一部分,它将数据发送到所需的php文件:

var to_users = $("#to_users").val();            
var title = $("#title").val();
var content = $("#content").val();

var data = {
    to_users:to_users,
    title:title,
    content:content
}

$.ajax({url: "submit.php", type:"POST" , data:data ,success: function(result){

    // does something
}});

关于使用ajax和php的附件在线有许多教程和问题,但没有一个处理多个文件。 我的问题是:我需要添加到这个函数,以便将附加的文件发送到php文件? 我应该在php文件中写什么来处理它收到的文件?

要上传多个图像,请使用数组:

<input type="file" id="attachments" name="attachments[]" multiple>

并使用ajax发送表单数据:

 var formData = new FormData(this);
$.ajax({
    url: "submit.php",
    type: "POST",
    data: formData,
    processData: false,
    contentType: false,
    success: function(result){

    // do something
   }
});

在php文件中使用循环( foreach i recommended)来保存所有附件。

foreach($_FILES['attachments']['name'] as $key=>$val){

// do whatever you want

}

有很多问题几乎都是重复的,但它们都会受到创建FormData对象,然后逐个添加字段......这无法显示如何处理多个文件输入(并且是一个冗长的问题)和脆弱的问题解决方法)。

只需将form元素作为参数传递给FormData对象。

var formData = new FormData(document.querySelector("form"));
$.ajax({
    url: "submit.php",
    type: "POST",
    data: formData,
    processData: false,
    contentType: false
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM