• uniapp 一次性上传多条视频 u-upload accept=“video“ uni.chooseMedia uni.uploadFile


    在这里插入图片描述

    方式 一 部分安卓机 只能一条一条传视频

    文档地址 uview 2.0 Upload 上传组件
    html

    <view class="formupload">
    	<u-upload 
    	accept="video"
    	:fileList="fileList3" @afterRead="afterRead" @delete="deletePic" name="3" multiple
    		:maxCount="9"></u-upload>
    </view>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    script

    	// 删除图片
    			deletePic(event) {
    				this[`fileList${event.name}`].splice(event.index, 1)
    			},
    			// 新增图片 afterRead
    			async afterRead(event) {
    				// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
    				let lists = [].concat(event.file)
    				let fileListLen = this[`fileList${event.name}`].length;
    				lists.map((item) => {
    					this[`fileList${event.name}`].push({
    						...item,
    						status: 'uploading',
    						message: '上传中'
    					})
    				})
    				for (let i = 0; i < lists.length; i++) {
    					const result = await this.uploadFilePromise(event.name,lists[i].url);
    					let item = this[`fileList${event.name}`][fileListLen]
    					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
    						status: 'success',
    						message: '',
    						url: result
    					}))
    					fileListLen++
    				}
    			},
    			uploadFilePromise(num,url) {
    				return new Promise((resolve, reject) => {
    					let a = uni.uploadFile({
    						url: baseUrl + 'upload', // 上传图片视频的接口名
    						filePath: url,
    						name: 'file',
    						header: {},
    						formData: {
    							file: url
    						},
    						success: (res) => {
    							res.data = JSON.parse(res.data)
    							if (res.data.code == 0) {
    								setTimeout(() => {
    									resolve(res.data.url)
    								}, 1000)
    							} else {
    								uni.showToast({
    									title: '上传失败',
    									icon: 'none'
    								});
    								this[`fileList${num}`].pop()
    								return
    							}
    						},
    						fail: (error) => {
    							uni.showToast({
    								title: '上传失败',
    								icon: 'none'
    							});
    							reject(error)
    						}
    					});
    				})
    			},
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62

    方式 二 可以一次性上传多条视频

    文档地址 video
    uni.chooseMedia
    uni.uploadFile

    html

    	<view class="u-flex wrap">
    		<image src="@/static/image/up.png" mode="" class="u-w-160 u-h-160 u-m-r-16 u-m-b-16" 
    		@click="upvideoFun" v-if="fileList3.length < 9"></image>
    	<view class="vibox" v-for="(item,i) in fileList3" :key="i">
    		<video :src="item.url" class="viimg"></video>
    		<view class="vitext" @click="delFun(i)">  <text>x</text>  </view>	
    	</view>
    	</view>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    script

    	// 上传视频
    		 upvideoFun(){
    				let that = this;
    				uni.chooseMedia({
    				  count: 9,
    				  mediaType: ['video'],
    				  sourceType: ['album', 'camera'],
    				  maxDuration: 30,
    				  camera: 'back',
    				  success(res) {
    						let lists = [].concat(res.tempFiles);
    						for (let i = 0; i < lists.length; i++) {
    								uni.uploadFile({
    									url: baseUrl + 'upload',
    									filePath: lists[i].tempFilePath,
    									name: 'file',
    									formData: {},
    									success: (resres) => {
    										let data = JSON.parse(resres.data);
    										that.fileList3.push({
    											url:data.url
    										});
    									}
    								});
    						}
    				  }
    				});
    			},
    	
    			// 删除视频
    			delFun(i){
    				this.fileList3.splice(i, 1);
    			},
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    css

    .vibox{
    		width: 80px;
    		height: 80px;
    		position: relative;
    		border-radius: 2px;
    		margin: 0 8px 8px 0;
    		overflow: hidden;
    		display: flex;
    		flex-direction: row;
    		.viimg{
    			width: 80px;
    			height: 80px;
    		}
    		.vitext{
    			position: absolute;
    			top: 0;
    			right: 0;
    			background-color: #373737;
    			height: 14px;
    			width: 14px;
    			display: flex;
    			border-bottom-left-radius: 100px;
    			align-items: center;
    			justify-content: center;
    			z-index: 3;
    			text{
    				font-size: 10px;
    				font-weight: normal;
    				top: 0px;
    				color: #ffffff;
    				transform: translate(1px,-3px);
    			}
    		}
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
  • 相关阅读:
    windows局域网共享文件
    uniapp 在uni.scss 根据@mixin定义方法 、通过@include全局使用
    c语言:三个数排序(if-else实现)
    Redis——Jedis中hash类型使用
    Kubernetes Kubelet 状态更新机制
    DataFrame数据重塑与数据透视表df.pivot()方法df.pivot_table()方法
    react-native导航组件
    Qt 中 connect 函数实现信号与槽函数的连接
    如何使用MybatisPlus进行数据分页显示
    java final修饰main函数
  • 原文地址:https://blog.csdn.net/AAAXiaoApple/article/details/133810795