首页 > 编程语言 >uniapp实现图片上传——支持APP、微信小程序

uniapp实现图片上传——支持APP、微信小程序

时间:2024-05-31 17:29:51浏览次数:29  
标签:uniapp uploadFile default 微信 APP fileList url type event

uniapp实现图片、视频上传

文章目录

相关文档:


效果图

在这里插入图片描述


组件

  • 简单封装,还有很多属性…,自定义样式等…根据个人所需调整
template
<template>
	<view>
		<u-upload
			:fileList="fileList"
			@afterRead="afterRead"
			@delete="deletePic"
			name="files"
			:maxCount="maxCount"
			:multiple="multiple"
			:width="width"
			:height="height"
			:previewFullImage="previewFullImage"
			:accept="accept"
		>
		</u-upload>
	</view>
</template>

js
  • toast 方法,修改为自己即可;
<script>
	export default {
		name:"uploadFile",
		props: {
			width: {
				type: Number,
				default: 60
			},
			height: {
				type: Number,
				default: 60
			},
			maxCount: { // 限制上传数量
				type: Number,
				default: 1
			},
			multiple: { // 是否开启图片多选
				type: Boolean,
				default: false
			},
			list: { // 图片列表
				type: Array,
				default: []
			},
			previewFullImage: { // 文件预览
				type: Boolean,
				default: true
			},
			accept: { // 上传类型 all | media | image | file | video
				type: String,
				default: image
			}
		},
		data() {
			return {
				fileList: []
			};
		},
		mounted() {
			this.fileList = this.list;
		},
		methods: {
			/**
			 * 删除图片
			 * @param {Object} event
			 */
			deletePic(event) {
				this.fileList.splice(event.index, 1)
			},
			/**
			 * 读取后的处理函数
			 * @param {Object} event
			 */
			async afterRead(event) {
				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 result = await this.uploadFilePromise(lists[i].url)
					this.$util.showToast('上传成功');
					
					let item = this.fileList[fileListLen]
					this.fileList.splice(fileListLen, 1, Object.assign(item, {
						status: 'success',
						message: '',
						url: result.imgUrl
					}))
					fileListLen++
				}
			},
			/**
			 * 上传图片
			 * @param {Object} url
			 */
			uploadFilePromise(url) {
				return new Promise((resolve, reject) => {
					uni.uploadFile({
						url: `服务器 url xxxx`,
						filePath: url,
						name: 'file', // 文件对应的 key
						header: {
							// 根据个人所需,是否要登录
							// Authorization: `Bearer ${ getToken() }`
						},
						success: (res) => {
							// 接口返回数据,自行修改
							let datas = JSON.parse(res.data);
							if (datas.code != 200) {
								this.$util.showToast(datas.msg);
								reject(res);
								return;
							}
							setTimeout(() => {
								resolve(datas.data)
							}, 1000)
						},
						fail: (res) => {
							reject(res);
						}
					});
				})
			}
		}
	}
</script>

<style>

</style>

使用

<view>
	<uploadFile :list="imgList"></uploadFile>
</view>

import uploadFile from '@/components/uploadFile/uploadFile.vue'

export default {
		components: {
			uploadFile
		},
		data() {
			return {
				imgList: [{ url: 'https://cdn.uviewui.com/uview/swiper/1.jpg' }] // test 根据业务处理
			}
		}
	}
}

标签:uniapp,uploadFile,default,微信,APP,fileList,url,type,event
From: https://blog.csdn.net/Smile_ping/article/details/139326329

相关文章

  • Uscrapper:一款功能强大的网络资源爬取工具
    关于UscrapperUscrapper是一款功能强大的网络资源爬取工具,该工具可以帮助广大研究人员从各种网络资源中轻松高效地提取出有价值的数据,并且提供了稳定、友好且易于使用的UI界面,是安全研究人员和网络分析人员的强有力工具。Uscrapper最大程度地释放了开源情报资源的力量,该工具......
  • 微信小程序下载预览PDF(可自定义文件名称)
    wx.showLoading({title:'加载中',mask:true,})constfileName='测试.pdf'constnewPath=`${wx.env.USER_DATA_PATH}/${fileName}.pdf`;wx.downloadFile({url:�......
  • 微信小程序源码-外卖系统的计算机毕业设计(附演示视频+源码+LW)
    大家好!我是职场程序猿,感谢您阅读本文,欢迎一键三连哦。......
  • 微信小程序源码-社区团购系统的计算机毕业设计(附演示视频+源码+LW)
    大家好!我是职场程序猿,感谢您阅读本文,欢迎一键三连哦。......
  • 揭秘APP广告变现项目
    在当今移动应用市场,广告变现已经成为开发者盈利策略的重要组成部分。通过在应用程序中展示多种类型的广告,如插页式广告、横幅广告和激励视频广告,开发者能够获得经济效益。实现这一目标的核心在于平衡收入与用户体验,避免过度干扰用户。激励视频广告由于其高观看率和参与度......
  • 在处理预览影片时,AppStore 提交卡住了
    我昨天提交了一个新的应用程序,其中包含一个适用于多种尺寸设备的视频预览文件(6.7,以及6.7的一个副本,适用于6.5、5.5和12.9)。iPhone文件每个都需要5-10分钟的处理时间(文件图标显示云图像),但每个文件最终都能正常运行。iPad文件上传正常,但18小时后仍显示云图标。所有这......
  • 柬埔寨语翻译通App上架啦!支持高棉语翻译成中文,中柬互译,高棉语OCR文字识别提取,提高工作
    大家好!有个超级棒的消息要告诉大家——柬埔寨语翻译通小程序已经上架啦!不论你是安卓还是苹果用户,都可以轻松下载使用!只要微信搜一搜,翻译之路畅通无阻!这不仅仅是一个翻译工具,它还支持高棉语中文双语翻译,翻译结果支持语音朗读,翻译记录自动保存!跟着说跟着读,高棉语词汇轻松掌握......
  • 微信小程序点击事件冒泡处理
    <viewclass="item_box"wx:for="{{listData}}"wx:key="index"bind:tap="goToCheck"data-id="{{item.rderId}}"data-check="{{item.timeCheck}}"data-recheck="{{item.timeRecheck}}">......
  • 微信小程序 uniapp智慧捐赠系统dln9d
    1)通过查阅相关的书籍搜集材料,进行需求调查。(2)写需求分析文档,确定系统的主要模块。 (3)画出ER图,流程图等图示以用来明确模块之间的关系 (4)根据需求分析,建立数据库文档,设计表和字段。 (5)进行系统的界面设计。 (6)通过python+java+node.js+php语言和MySQL数据库实现本系统......
  • 模型节点操作学习笔记(Appendix)实验1 -- Tflite int8 删除最后的Round节点 (持续更新)
    背景如下:我要删除Round节点,同时看了一下,Dequantize和Quantize也是没有必要的。所以最好一起删除。原始项目地址:PINTO0309/hand-gesture-recognition-using-onnx:ThisisahandgesturerecognitionprogramthatreplacestheentireMediaPipeprocesswithONNX.Simultane......