前言就不多说了,直接言归正传!!!
- 第一个问题(多文件多次请求):使用layui上传多文件的js源码是在upload.js中,当然果如你使用的是layui.all.js,那这个上传文件的代码是在layui.all.js文件里。直接讲最关键的上传部分源码就好,layui的做法是使用layui.each()遍历文件队列依次发送Ajax(post,默认使用异步)请求到后台的。
- 解决方法(多文件一次请求):看懂的关键部分,要想一次请求携带所有文件,先所有文件遍历放在同一个FormData中,最后最后在发送一次Ajax请求。当然这样虽然可以做到一次上传所有文件,但是对应的上传成功或失败后修改每个文件的状态还没做好,所有还得添加几行代码,稍见下方代码
- 源代码
// 使用layui.all.js 中的代码示范(格式化后 lines=4323 or search=请求上传接口出现异常)
layui.each(a, function (e, a) {
var r = new FormData;
r.append(l.field, a), layui.each(l.data, function (e, i) {
i = "function" == typeof i ? i() : i, r.append(e, i)
}), i.ajax({
url: l.url,
type: "post",
data: r,
contentType: !1,
processData: !1,
dataType: "json",
headers: l.headers || {},
success: function (i) {
t++, d(e, i), u()
},
error: function () {
n+