通过创建一个FormData对象并将表单元素(包括文件输入)附加到该对象,您应该能够成功地将文件作为$_FILES数组的一部分发送到后端。
jQuery中的serialize()方法不包括文件输入,因为出于安全和技术考虑,文件上传需要特殊处理。文件输入包含二进制数据(文件本身),这些数据不能以与文本字段或其他表单元素相同的方式序列化。
要在使用AJAX提交表单时包含文件输入字段,您需要使用FormData对象,如我之前的响应中修改的JavaScript代码所示。这允许您收集包括文件在内的所有表单数据,并将其正确发送到服务器。
因此,当您使用serialize()时,它会排除文件输入,并且您应该使用FormData来处理AJAX请求中的文件上载。
用formData对象的时候ajax里面一定要传递contentType: false, processData: false, 否则提示的是illegal invocation 非法调用错误