uniapp 多文件上传

本文介绍了在Uniapp中实现文件上传功能的方法,包括获取文件路径、选择文件(支持多种格式)、以及使用uni.uploadFile进行文件上传和服务器交互,确保上传成功并处理可能的错误情况。
摘要由CSDN通过智能技术生成

实现uniapp单个,多个文件上传的功能。 支持上传excel,word,pdf,excel等文件 。我这个文件上传分了两步,一步是选择文件, 第二步时提交文件的同时也把文件路径上传到服务器了,你们根据自己的需求修改

一 获取文件路径

安卓选择文件获取上传路径 - DCloud 插件市场

我通过uniapp官网市场插件首先获取到上传的文件路径

如果文件下载不了,上面那个是压缩包

二 选择文件

代码部分

<view @click="chooseFile">选择附件</view>
//这个是市场插件的代码
<ysh-file-manager ref="filemanager" @result="resultPath"></ysh-file-manager>
// 提交文件
<view @click="submitFile">提交文件</view>
// 点击选择文件后执行下面这两个方法
chooseFile() {
			this.$refs.filemanager._openFile();
},
resultPath(e) {
            // e.path 就是你选择文件的路径
             // 筛选你文件的格式,看个人需求
			let arr = ['jpg', 'JPG', 'png', 'PNG', 'pdf', 'PDF', 'doc', 'DOC', 'docx', 
                   'DOCX', 'jpeg', 'JPEG', 'gif', 'GIF', 'bmp', 'BMP']

            // 判断文件是否重复选择,如何重复选择,则给提示,将文件的路径存储到一个空数组中
			if (this.fileList.indexOf(e.path) == -1) {
				this.fileList.push(e.path)
			} else {
				uni.showModal({
					content: '附件已经选择,请勿重复选择',
					showCancel: false,
				})
			}

		},
// 提交文件
async uploadFile() {
			uni.showLoading({
				title: '文件上传中,请稍后',
				mask: true
			});
            // 通过for循环和 uni.uploadFile 将你存储到数组中的文件依次到服务器,获取文件的下载地址
			for (let i = 0; i < this.fileList.length; i++) {
				await uni.uploadFile({
                    // url 是你接口前面的公共部分
					url: url + '上传文件路径',
					methods: 'post',
					filePath: this.fileList[i],
					name: 'file',
					formData: {
						// 上传是带的参数在这里面放着
					},
					success: async (uploadFileRes) => {
						let route = JSON.parse(uploadFileRes.data);
						let files = route.content.rows
                        // 将服务器返回的文件地址存储到数组中
						this.list.push(...files)
						if (route.state == 1) {
                            // 这个是判断文件路径是否全部上传到服务器中--文件全部上传到服务器后开始提交文件
							if (this.list.length == this.fileList.length) {
                               // 提交文件
								const { data } = await this.$http({
									url: '文件提交路径',
									method: 'post',
									data: {
                                    // 提交文件的参数
                                    }
								})
								if (data.state == 1) {
									uni.hideLoading()
									uni.showModal({
										content: "文件上传成功",
										showCancel: false,
									})
								} else {
									uni.hideLoading()
									uni.showModal({
										content: data.message,
										showCancel: false
									})
								}
							}

						} else {
							uni.hideLoading()
							uni.showModal({
								content: route.message,
								showCancel: false
							});
						}
					},
					fail: (err) => {
						uni.hideLoading();
						uni.showModal({
							content: '附件选择失败,请重试',
							showCancel: false
						});
					}
				})
			}



		},
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值