【发布时间】:2018-02-07 14:33:40
【问题描述】:
我想上传多个文件上传。 我在客户端有这个:
$(document).on( "click", ".save-button", function () {
var data = new FormData();
data.append('title', $(this).parent().parent().find("#title_place").val());
$.each($(this).parent().parent().find("input[type='file']")[0].files, function(i, file) {
data.append('file', file);
});
$.ajax({type: "POST",
url: 'save_view.php',
data: data,
success : viewSaveCallBack,
cache: false,
contentType: false,
processData: false,
});
});
我检查了调试器中的所有数据,它工作正常。为了看到这一点,我显示了
的值 $(this).parent().parent().find("#title_place").val()
还有
$(this).parent().parent().find("input[type='file']")[0].files
然后,当我尝试在服务器端 var_dump $_FILES 或 $_POST 时,它是空的。 调试器也是如此。
我也试过了
data.append('files[]', file);
当我尝试上传单个文件时(在另一个输入中,不完全相同的代码),它工作正常。
输入的html是这个:
<input type=\"file\" multiple directory webkitdirectory allowdirs class=\"form-control input\" id=\"marzipano\">
并且它是动态添加到 DOM 中的。
当我上传单个文件时,一切正常。
它不是 Sending multipart/formdata with jQuery.ajax 的重复,因为我已经使用了 FormData 对象,并且我的代码与答案相同。它仍然没有按预期工作。
【问题讨论】:
-
您的
.save-button真的在提交表单吗?如果是这样,这将取消您的 AJAX 请求。 -
@RoryMcCrossan 不,我在服务器端放了一个断点,然后它就到了那里。
-
您确定内容类型设置正确吗?见api.jquery.com/jquery.ajax
-
@dnFer 使用 FormData 对象时, contentType 应设置为 false 。
标签: javascript php jquery