IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> uniapp 微信小程序 实现上传多个图片 -> 正文阅读

[JavaScript知识库]uniapp 微信小程序 实现上传多个图片

效果图:
在这里插入图片描述

代码:

upload.vue

<u-upload
	accept="image"
	capture="['album', 'camera']"
	:previewImage="true"
	width="200"
	height="200"
	:fileList="fileList"
	@afterRead="afterRead"
	@delete="deletePic"
	name="uploader-componet"
	multiple
	:maxCount="9"
>
	<div style="background-color: #f4f5f7;width:200rpx;height:200rpx;display: flex;align-items: center;justify-content: center;border-radius: 4rpx;box-sizing: border-box;">
		<u-icon name="camera-fill" color="#D3D4D6" size="50"></u-icon>
	</div>	
</u-upload>

<u-button type="primary" :plain="true" text="提交申请"
	@click="submitRefundApplyHandle()">
</u-button>
<script>
	import refundApi from '@/api/refund.js'
	export default{
		data(){
			return {
				fileList:[],
submitRefundApplyHandle(){
	// this.$refs.refRefundApplyForm.validate().then(res => {
	// 	uni.$u.toast('校验通过')
	// }).catch(errors => {
	// 	uni.$u.toast('校验失败')
	// })
	let formObj = deepCopy(this.refundApplyForm)
	formObj.reasonType = this.transf_reasonType[formObj.reasonType]
	this.applyRefundHandle(formObj)
},
applyRefundHandle(formObj){
	console.log('提交的表单:', formObj,this.fileList)
	const arr_temp = []
	this.fileList.forEach((item,index) => {
		arr_temp.push({name:'image'+index,uri: item.url})
	})
	// formObj.annexFiles = this.fileList
	let requestLength = 0
	const annexFileIds = []
	arr_temp.forEach((ele,index) => {
		refundApi.uploadRefundAnnexFile(arr_temp[index], 'file').then(res => {
			const response = JSON.parse(res)
			console.log('上传照片结果:',response)
			if (response.code === 200) {
				++requestLength
				annexFileIds.push(response.data)
				if(requestLength===arr_temp.length){
					formObj.annexFileIds = annexFileIds.join()
					refundApi.createRefundApply(formObj).then(res => {
						console.log('提交申请结果:',res)
						if (res.code === 200) {
							// 跳转到结果页
							uni.reLaunch({
								url: '/pages/my/refundApply/refundResult?pageMsg=申请成功,请等待人员审核'
							});
						} else {
							uni.showToast({
								title: res.msg,
								icon: 'none',
								duration: 5000,
							})
						}
					})
				}
			} else {

			}
		})
	})

},
// 删除图片
deletePic(event) {
	this.fileList.splice(event.index, 1)
},
afterRead(event) {
	console.log('照片地址:', event)
	// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
	let lists = [].concat(event.file)
	let fileListLen = this.fileList.length
	lists.map((item) => {
		this.fileList.push({
			...item,
			status: 'uploading',
			message: '上传中'
		})
	})
	for (let i = 0; i < lists.length; i++) {
		const url = lists[i].url
		let item = this.fileList[fileListLen]
		this.fileList.splice(fileListLen, 1, Object.assign(item, {
			status: 'success',
			message: '',
			url: url
		}))
		fileListLen++
	}
},

refundResult.vue(用于显示上传成功)

<template>
	<view class="content">
		<view >
			<u--image :showLoading="true" :src="require('static/img/my/submit.png')" width="500rpx" height="500rpx">
			</u--image>
			<view class="text-style">{{message}}</view>
			<view class="mg30">
				<u-button type="primary" :plain="true" text="返回首页"
					@click="backHome()">
				</u-button>
			</view>
		</view>
	</view>
</template>

<script>
	export default{
		data(){
			return{
				message:''
			}
		},
		onLoad:function(option){
			this.message = option.pageMsg
		},
		methods:{
			backHome(){
				uni.switchTab({
					url: '/pages/home/index'
				})
			},
		}
	}
</script>

<style lang="scss" scoped>
	.content{
		margin-top: 100rpx;
		padding: 30rpx;
		display: flex;
		justify-content: center;;
	}
	.text-style{
		color: #aaa;
		text-align: center;
	}
	.mg30{
		margin-top: 30rpx;
	}
</style>

config/request.js

function uploadFile_common (url, file, name, callback = '') {
	const token = uni.getStorageSync('user_token')
	return new Promise((resolve, reject) => {
		console.log('拿到的参数:', url, file, name)
        uni.uploadFile({
			url: baseUrl + url,
            header: { 'Authorization': 'Bearer ' + token, 'Content-Type': 'multipart/form-data' },
			fileType:'image',
            filePath: file.uri,
            name: name,
            success: res => {

            },
            fail: err => {
                reject(err)
                console.log('[上传接口错误:uploadFile_common:',err)
            },
            complete: res => {
                if (callback){
                	return callback(res.data)
                }
                if (res.data.code === 401) {
                    console.log('上传接口401:uploadFile_common')
					try {
						uni.removeStorageSync('user_token')
					} catch (e) {
						console.log('user_token移除失败(uploadFile_common)')
					}
					// 将需要重新执行的接口缓存到一个队列中
					addSubscriber(() => {
						uploadFile_common(url, file, name, formData, resolve)
					})
					if (isRefreshing) {
						getNewToken().then(() => {
							// 依次去执行缓存的接口
							onAccessTokenFetched();
							isRefreshing = true;
						}).catch(e => {
							console.log('getNewToken错误(uploadFile_common):', e)
						})
                   }
                   isRefreshing = false; 
                } else {
                    resolve(res.data)
                }
            }
        })
	})
}
export { uploadFile_common }

refund.js

import {uploadFile_common} from '@/config/request.js'
export default {
	// 上传申请照片
	uploadRefundAnnexFile(file, name) {
		return uploadFile_common('/wechat/selfPrint/refundApply/uploadRefundApplyAnnexFile', file, name)
	},

}
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:38:21  更:2022-05-01 15:38:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:05:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码