前言:在uniapp官方文档中的uni-file-picker组件可实现图片上传功能,官方文档:uniapp官网 中的案例不能完全满足需求,官网中默认的是上传到自带的服务空间
以下是代码:
view代码:
:auto-upload="false"加上这个取消自动上传
<uni-file-picker v-model="filePathsList" :auto-upload="false" file-mediatype="image" mode="grid"
fileMediatype="image" @select="handleSelect" @delete="handleDelete" />
methods方法
选择图片
async handleSelect(res) {
await this.uploadImg(res.tempFilePaths, 1);
},
上传图片
async uploadImg(tempFilePaths, token) {
if (!tempFilePaths.length) return; //如果没有选择图片就退出
//循环选择图片的张数
tempFilePaths.map(async () => {
const path = tempFilePaths.pop();
//因为我这个后台给的接口一次只能上传一张图片,所以每循环一次就调用接口上传一次
const [err, {data}] = await uni.uploadFile({
url: 'https://localhost/file/api/uploadtemp',//后台地址
filePath: path,
name: 'file',
formData: {
'user': 'test'
},
});
//因为async返回的是个promise对象,所以要把返回的数据转为对象格式。
let dataObj = JSON.parse(data)
//每循环一次就把后台返回的图片地址添加到filePathsList数组
this.filePathsList.push({
url: dataObj.data,
name: ""
})
})
console.log('filePathsList', this.filePathsList);
this.uploadImg(tempFilePaths, token);
},
删除图片
handleDelete(err) { // 删除图片
const num = this.filePathsList.findIndex(v => v.url === err.tempFilePath);
this.filePathsList.splice(num, 1);
},
上传事例:
参考http://t.csdn.cn/RWQ85这个博主写的,自己修改了一点。
疑问 参考博主的文章中这个代码 this.isGuid 不知道是什么意思,希望有人看到了可以讲解下。文章来源:https://www.toymoban.com/news/detail-514072.html
if (!this.isGuid(data)) {
// upload fail
this.filePathsList.pop()
uni.showToast({
title: "上传失败",
icon: "none"
})
}else{
// upload success
this.filePathsList[this.filePathsList.length - 1].name = data
}
(自己的笔记)文章来源地址https://www.toymoban.com/news/detail-514072.html
到了这里,关于uniapp中的uni-file-picker组件上传多张图片到服务器,可添加,预览,删除图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!