我在表单中有以下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文件中写什么来处理它收到的文件?
答案 0 :(得分:4)
要上传多张图片,请使用数组:
<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
)来保存所有附件。
foreach($_FILES['attachments']['name'] as $key=>$val){
// do whatever you want
}
答案 1 :(得分:3)
有很多问题几乎都是重复的,但它们都会受到创建FormData对象,然后逐个添加字段......这无法显示如何处理多个文件输入(并且是这个问题冗长而脆弱的方法。)
只需将form元素作为参数传递给FormData对象。
var formData = new FormData(document.querySelector("form"));
$.ajax({
url: "submit.php",
type: "POST",
data: formData,
processData: false,
contentType: false
});