Vant Uploader 上传多张图片设置status

3 篇文章 0 订阅

Uploader多张上传,使用file.status设置上传状态

1、页面结构

<van-uploader :before-read="beforeRead" :after-read="afterRead" :before-delete="deletImg"
		:max-count="maxSize" v-model="fileList" multiple>
	<van-icon name="plus" />
</van-uploader>

2、前置条件放到beforeRaed方法中 (是否是图片类型、是否超过限定文件大小)

在beforeRead方法中判断文件是否符合条件后,一定要记得返回true或者false状态,不然afterRead方法不会执行。很重要!!!!

beforeRead(file) {
	let This = this
	if (Array.isArray(file)) {
		if (file.length > This.maxSize) {
			This.$toast("超过最大上传张数!")
			return false
		}
		file.forEach(item => {
			if (!item.type.startsWith('image')){
			    this.$toast("请上传图片!")
				return false
			}else if(item.size > 10485760){
                this.$toast("图片超过10M!")
                return false
            }
	    })
 
	} else {
		if (!file.type.startsWith('image')){
			this.$toast("请上传图片!")
			return false
		}
 
        if(file.size > 10485760){
            this.$toast("图片超过10M!")
			return false
        }
	}
 
	return true
},

3、在afterRaed中设置上传状态、上传提示语

afterRead(file) {
	let This = this
	if(Array.isArray(file)){
		file.forEach(item => {
		    item.status = 'uploading'
			item.message = '上传中...'
			This.uploadMaterialImg(item)
		})
	}else {
			file.status = 'uploading'
			file.message = '上传中...'
			this.uploadMaterialImg(file)
	}
}

 

4、调用接口上传成功后,将状态设置为成功

关于compressFile()是图片压缩的方法,在他的另一篇文章中有写到,感兴趣可以看看,传送门附上vue 图片上传压缩(vue+Vant+image-compressor)

async uploadMaterialImg(imgFile) {
	let This = this
	let file = await this.compressFile(imgFile)
	let formData = new FormData()
	formData.append('file', file, file.name)
	uploadMaterial(formData).then(res => {
		if (res.code == 200) {
			imgFile.status = 'done'
			imgFile.message = '上传成功'	
		} else {
			This.$toast("照片上传失败,请重新上传!")
		}
	}).catch(error => {
		imgFile.status = 'failed'
		imgFile.message = '上传失败'
		This.$toast("照片上传失败,请重新上传!")
	})
}

到此,上传多张或一张文件设置上传状态的路程完毕!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vant Uploader组件可以实现一次性上传多张图片。通过设置`multiple`属性为`true`,可以允许用户选择并上传多张图片。以下是一个示例代码: ```html <van-uploader :before-read="beforeRead" :after-read="afterRead" multiple > <van-icon name="plus" /> </van-uploader> ``` 在`beforeRead`方法中,可以对上传图片进行处理,例如判断图片类型和大小等。 ```javascript methods: { beforeRead(file) { console.log(file) if (!this.imageAccept.includes(file.type)) { return this.$notify('请上传 jpg/png 格式图片'); } if (file.size > 3 * 1024 * 1024) { return this.$notify('图片不能大于3M'); } // 处理图片上传逻辑 // ... }, afterRead(res) { // 处理上传成功后的逻辑 // ... } } ``` 以上是使用Vant Uploader一次性上传多图的基本逻辑,你可以根据自己的需求进一步完善和定制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Vant Uploader 上传多张图片设置status](https://blog.csdn.net/codingLeader/article/details/123656613)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Vant Uploader实现上传一张或多张图片](https://blog.csdn.net/weixin_48409307/article/details/121657410)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值