uniapp 之使用 u-upload 组件来实现图片上传

news2024/11/19 5:24:54

uniapp 之使用 u-upload 组件来实现图片上传

  • 前言
  • 一、官方示例用法
    • 分析
  • 二、关闭自动上传,使用手动上传的方式,代码
    • html 代码
    • js 代码
    • css 代码
  • 总结分析


前言

在使用 uniapp 开发的微信小程序中使用了图片上传功能,使用了 uniapp 的图片上传组件
注意:我这里后端接口接收类型为form-data,参数名为files


一、官方示例用法

uview 1.0 u-upload 官方文档

<template>
	<view>
		<u-upload ref="uUpload" :action="action" :auto-upload="true" ></u-upload>
		<u-button @click="submit">提交</u-button>
	</view>
</template>
<script>
	export default {
		data() {
			return {
				action: 'http://www.example.com/upload',
				filesArr: []
			}
		},
		methods: {
			submit() {
				let files = [];
				// 通过filter,筛选出上传进度为100的文件(因为某些上传失败的文件,进度值不为100,这个是可选的操作)
				files = this.$refs.uUpload.lists.filter(val => {
					return val.progress == 100;
				})
				// 如果您不需要进行太多的处理,直接如下即可
				// files = this.$refs.uUpload.lists;
				console.log(files)
			}
		}
	}
</script>

分析

首先可以看到 <u-upload ref="uUpload" :action="action" :auto-upload="true" > 这里的 :auto-upload="true" ,这里是设置文件选中后自动上传,且上传路径为 data 当中定义的 action ,但是这里使用自动上传的时候,只能设置上传的 url 地址,如果业务当中有其他需求,比如请求头中需要携带 token … 将无法满足
因此可以选择将自动上传关掉 :auto-upload="false"
绑定选择完成后的回调函数,并在回调函数当中使用手动上传 @on-choose-complete="onChooseComplete"

二、关闭自动上传,使用手动上传的方式,代码

html 代码

<template>
	<u-form :model="deviceInfo" ref="uForm">
		<view class="top">
			<u-form-item prop="imgUrl" label-width="10" :border-bottom='false'>
				<u-upload @on-choose-complete="onChooseComplete" ref="uUpload" :custom-btn="true"
					:show-upload-list="true" :auto-upload="false" :file-list="fileList" :show-progress="true"
					:deletable="true" max-count="1" class="test2">
					<view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150">
						<image src="../static/img/addDevice.jpg" mode="aspectFill"></image>
					</view>
				</u-upload>
			</u-form-item>
		</view>
	</u-form>
</template>

js 代码

<script>
	// 这里引入的 Config 中配置了整个项目的接口地址
	import Config from '@/core/config'
	// 这里引入 store 是为了获取 token
	import store from '@/store/index.js';
	// 后端api地址
	const uploadUrl = Config.get('apiUrl') + 'admin-api/infra/file/upload';
	export default {
		data() {
			return {
				// 预置上传列表
				fileList: [],
				deviceInfo: {
					photoUrl: '',
				}
			}
		},
		methods: {
			onChooseComplete(lists, name) {
				const app = this;
				uni.uploadFile({
					// 这里是你上传图片的地址
					// url: 'https://xxx.xx.xx.xx/admin-api/infra/file/upload',
					url: uploadUrl,
					filePath: lists[0].url,
					name: 'file',
					header: {
						"Authorization": `Bearer ${store.getters.token}`
					},
						//	这个res是后端返回给你上传成功的数据里边一般会有上传之后图片的在线路径
					success: (res) => {
						app.deviceInfo.photoUrl = JSON.parse(res.data).data;
						console.log(JSON.parse(res.data).data)
					},
				})
			},
		}
	}
</script>

css 代码

<style lang="scss" scoped>
	.top {
		width: 224rpx;
		height: 224rpx;
		margin: 0 auto;
		margin-bottom: 50rpx;
		margin-top: 50rpx;

		image {
			width: 224rpx;
			height: 224rpx;
			border-radius: 50%;
		}

		.tips {
			font-size: 28rpx;
			color: $u-type-primary;
		}
	}
</style>

当前实现的效果
在这里插入图片描述


总结分析

当前项目中提供的上传图片需要携带 token
所以采用了 uni.uploadFile 来上传文件,这里要求参数 url 在app 端写全(携带 http / https )
uni.uploadFile 是无法被统一的请求拦截器拦截到的,如果需要携带请求头,需要自己在 uni.uploadFile 中进行配置,

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62890.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序开发平台

小程序开发平台顾名思义就是一个可以开发小程序的地方。 小程序开发平台&#xff1a;【电脑浏览器输入3M.FKW.COM了解详情】 适合群体&#xff1a;企业、机构、个体户 小程序开发方式&#xff1a; 自建——可以通过套用小程序模板&#xff0c;利用拖拽式小程序开发工具&…

某组态软件工程文件加密机制探究

某组态软件工程文件加密机制探究 前言 在工业自动化控制领域&#xff0c;组态软件是数据采集与过程控制的专用软件&#xff0c;是实现人机交互必不可少的工具。工程设计人员使用组态软件在PC机上进行工程画面组态的编辑&#xff0c;然后把编译后的组态逻辑通过以太网或串口下载…

HSRP协议(思科私有)/VRRP协议(公有)

数据来源 1、HSRP热备份路由协议&#xff08;备份网关&#xff09; 出现背景&#xff1a; 如下图一个公司拉两条网线一条用来备份网关是192.168.0.253&#xff0c;平时用的网关是254&#xff0c;如果网关是254的这条网线出问题了就可以使用备份不影响公司让人员上网&#xff…

2022最新版 Java 学习线路图

第 1 阶段 - 企业级开发 - java 基础 学习掌握本阶段的内容&#xff0c;可以实现诸如迅雷下载软件、QQ 聊天客户端、中小网站&#xff0c;例如&#xff1a;小型旅游网站、小型电商网站的开发 第 2 阶段 - 企业及开发 - 基础框架 学习掌握本阶段内容&#xff0c;可以快速、规范的…

CRC校验——以SHT4xA温湿度传感器为例

CRC校验——以SHT4xA温湿度传感器为例一、简介二、计算方法&#xff08;一&#xff09;步骤&#xff08;二&#xff09;参考代码&#xff08;C语言&#xff09;&#xff08;三&#xff09;检验&#xff1a;CRC(0xBEEF) 0x92三、参考一、简介 循环冗余校验码&#xff08;CRC&am…

[附源码]计算机毕业设计JAVA疫情防控下高校教职工健康信息管理系统

[附源码]计算机毕业设计JAVA疫情防控下高校教职工健康信息管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

试剂盒和示踪剂—艾美捷FLIVO探针活体凋亡检测分析

针对FLIVO(FLuorescence in vIVO)探针的研究&#xff0c;本篇文章推荐艾美捷ImmunoChemistry&#xff08;ICT&#xff09;FLIVO探针系列的&#xff1a;天冬氨酸蛋白酶(Caspases)活性检测试剂盒&#xff0c;及 FLIVO示踪剂&#xff0c;主要用于细胞凋亡活体检测&#xff0c;助力…

大型分布式系统下缓存应该怎么玩,才能用得高效

大家好&#xff0c;今天我们来聊一聊在大型分布式系统中&#xff0c;缓存应该怎么玩&#xff0c;从毕业到现在也有三年多了&#xff0c;大大小小的系统也经历了几十个&#xff0c;今天就从各个角度来讨论一下&#xff0c;我们的不同的缓存应该怎么玩&#xff0c;才能用的高效。…

N皇后问题(分支限界法)

问题描述&#xff1a; 在 n * n 格的棋盘上放置彼此不受攻击的 n 个皇后。按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题等价于在 n * n 的棋盘上放置 n 个皇后&#xff0c;任何 2个皇后不放在同一行或同一列或同一斜线上…

Ansys Speos | 新型计算方法:使用 GPU 提升计算速率

前言 Speos 在2022R2版本中正式推出 GPU 计算功能&#xff0c;相比于 CPU 计算&#xff0c;相同HPC32配置&#xff0c;高性能显卡在仿真计算中将会更显计算优势&#xff0c;在仿真数据量大、材料属性复杂、光源种类多的条件下&#xff0c;Speos 视觉模拟会消耗更多仿真计算时间…

ARM异常处理(1):异常类型、优先级分组和异常向量表

本系列文章将以Cortex-M3内核为例&#xff0c;对ARM的异常(exception)进行分析。 文章目录1 异常类型2 优先级3 向量表1 异常类型 Cortex-M3提供了一个功能丰富的异常体系结构&#xff0c;它支持很多系统异常和外部中断。异常编号1-15表示系统异常&#xff0c;16及以上表示外部…

0116 查找算法 Day5

剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右 非递减 的顺序排序&#xff0c;每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该…

2022快手电商短视频运营白皮书:Q2对比Q1GMV总值增长率达12%

1、2022快手电商短视频运营白皮书&#xff1a;Q2对比Q1GMV总值增长率达12%新榜讯 12月2日&#xff0c;快手电商发布《2022快手电商短视频运营白皮书》。白皮书数据显示&#xff0c;2022年4-6月&#xff0c;随着平台商家对短视频渠道的认知提升&#xff0c;挂车短视频生产量不断…

【人脸识别】MVFace:一个优于CosFace和ArcFace的人脸识别损失

论文题目&#xff1a;《Mis-classifified Vector Guided Softmax Loss for Face Recognition》 论文地址&#xff1a;https://arxiv.org/pdf/1912.00833v1.pdf 代码地址&#xff1a;http://www.cbsr.ia.ac.cn/users/xiaobowang/ 1.背景 迄今为止&#xff0c;提出了几种基于mar…

Hashing to elliptic curve算法改进

1. 引言 前序博客有&#xff1a; ECDSA VS Schnorr signature VS BLS signature 第3节“BLS签名” 私钥pkpkpk&#xff0c;对应的公钥为PpkGPpk\times GPpkG。待签名消息mmm。 BLS signature的签名流程为&#xff1a; 1&#xff09;通过H(m)H(m)H(m)将消息mmm映射为point o…

计算机毕业论文java毕业设计选题源代码javaweb企业门户网站官网

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 《javaweb企业门户网站》该项目采用技术&#xff1a;jsp servlet mysqljdbccssjsjQuery等相关技术&#xff0c;项目含有源码、文档、配套开发软件…

[hadoop全分布部署]安装Hadoop、配置Hadoop 配置文件②

&#x1f468;‍&#x1f393;&#x1f468;‍&#x1f393;博主&#xff1a;发量不足 个人简介&#xff1a;耐心&#xff0c;自信来源于你强大的思想和知识基础&#xff01;&#xff01; &#x1f4d1;&#x1f4d1;本期更新内容&#xff1a;安装Hadoop、配置Hadoop 配置文件…

手把手教你SSM整合(包教包会)

SSM整合 步骤&#xff08;七步&#xff09; 新建maven项目&#xff0c;添加依赖 可以选择根据模版创建maven项目 <dependencies><!--spring-webmvc--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc&…

OpenCV入门(C++/Python)- 使用OpenCV调整尺寸大小(三)

使用OpenCV调整图像大小。要调整图像的大小&#xff0c;可以根据每个轴&#xff08;高度和宽度&#xff09;进行缩放&#xff0c;考虑指定的缩放因素&#xff0c;或者只需设置所需的高度和宽度。 调整图像大小时&#xff1a; 如果想在调整后的图像中保持相同的宽高比&#xf…

Redis 7.0 源码调试环境搭建与源码导读技巧

天下武功&#xff0c;无坚不摧&#xff0c;唯快不破&#xff01;我的名字叫 Redis&#xff0c;全称是 Remote Dictionary Server。 有人说&#xff0c;组 CP&#xff0c;除了要了解她外&#xff0c;还要给机会让她了解你。 那么&#xff0c;作为开发工程师的你&#xff0c;是否…