在这个项目中,我的所需要做的就是把客户所需要的图片上传到服务器,然后返回一个id,再把这个id在一次请求一个接口上传服务器。
当初在做pc端的时候也有这个业务,当时用的是element ui 我那时候第一次做这个需求,我的想法非常复杂,当时是每天添加一张图片就自动上传到服务器,这个时候如果删除我不需要的图片我是根据删除的file里面的uid,找到上传之后的图片然后再删除这个图片,当时哇 绕来绕去…(以上都是废话)
现在进入正题
然后现在我做移动端的项目我就打算换一种思路做。我也不知道你们还有没有其他简单的。
我就把我的简单说一说。
不要聊了~ 不要聊了~ 先上代码~ 先上代码~
<cube-upload
ref="upload"
:action="action"
:simultaneous-uploads="2"
:process-file="processFile"
@file-submitted="fileSubmitted"//上传文件的事件
@file-removed="fileRemoved"//删除图片的事件
/>
----------methods方法-----------
fileSubmitted(file) {
file.base64Value = file.file.base64;
this.baseList.push(file.base64Value);
},
fileRemoved(file) {
this.baseList = this.baseList.filter(n => n != file.base64Value);//这个地方是用了es5的filter,找到删除的这张图片的base64,并抛弃他,不要他了
},
好 现在获得了还留着的图片的base64 现在就开始一次请求接口 由于我的图片base64是这样的
[‘第一个的’,‘第二个的’…]
我当时的想法就是 遍历出来每一张图片的base64 然后在里面请求接口 这个时候我就遇到了一个问题了 那就是这是异步的 我还没一个个的请求完成 下面就给我拿到了 存放上传图片返回的id字符串了。我东瞅瞅西瞅瞅发现有点麻烦,那我就换一个 我改用递归方法来把数组中的base64拿出来
toImgUpload(i) {
imgUpload(2, this.baseList[i]).then(json => {
this.imgs.push(json.id);//**这里的imgs我是用来存上传图片后台返回的图片id**
i++;
if (i < this.baseList.length) {
this.toImgUpload(i);//
} else {
//**这里写当把所有的图片都遍历出来上传后 我就调用我提交数据的接口**
}
});
},
好了第一次写文章,如果有写的不好的地方,希望各位提出我好更改~~