在项目上遇到这样的需求,就是问题反馈,允许用户上传图片。
因为是多图片同时上传,而且考虑到用户可能会更换已经选择的图片,所以没办法做到用户input[type="file"]选择一次图片就上传图片到服务器,必须是等到用户选择完毕后再一起上传。
比如用户这时候选择了5张图片,前端代码方面每次当用户选择一张图片,就把图片数据存入声明的 files 数组中。
<input id="upload-img" class="ipt-file" type="file" onchange="showImg" />
<button onclick="submit">提交</button>
var files = []
function showImg() {
let el = document.querySelector("#upload-img");
files.push(el.files[0]);
}
// 带有 async 的函数会返回一个 Promise 对象,我们可以执行此函数,然后用then()添加回调函数
async function beforeSubmit() {
let resArr = []; // 声明数组来存放请求返回的数据
// 循环遍历 files 数组,每次循环都使用 await 关键字处理异步请求,这样我们的异步请求就会按顺序进行,只有等到 await 后面的异步操作完成,才会接着函数体内后面的代码。
for (let i = 0; i &l