当前位置: 首页 > news >正文

uniapp上传功能用uni-file-picker实现

在这里插入图片描述

文章目录

  • html代码
  • 功能实现
  • css样式代码


html代码

        <uni-file-picker@select="onFileSelected"@cancel="onFilePickerCancel"limit="1"class="weightPage-upload-but"file-mediatype="image"></uni-file-picker><imageclass="weightPage-item-upload-img"v-if="weightData.img_url":src="weightData.img_url"mode=""></image><imageclass="weightPage-item-upload-img"v-elsesrc="@/static/checkDetails/upload.png"mode=""></image>

用image覆盖,就能实现完全自定义上传样式的功能(也能用其他的覆盖)
上传前:在这里插入图片描述

上传后:在这里插入图片描述

功能实现

  data() {return {weightData: {img_url: "",},};},methods: {onFileSelected(e) {// 获取选中的文件路径const filePath = e.tempFiles[0].url;console.log(filePath);// 调用上传图片的方法this.uploadImage(filePath);},async uploadImage(filePath) {try {let formData = new FormData();formData.append("file", {url: filePath,name: "image.jpg",type: "image/jpeg",});// 转换为普通 Objectconst formDataObj = {};for (let [key, value] of formData.entries()) {formDataObj[key] = value;}/*#ifdef MP-WEIXIN*/// 从微信小程序的本地缓存中取出 tokenlet wxToken = wx.getStorageSync("token");let wxbaseURL = wx.getStorageSync("baseURL");// 检查是否成功获取到值if (wxToken) {uni.uploadFile({url: `${wxbaseURL}...`, //需要传图片的后台接口filePath: filePath, // 上传图片 通过uni-app的uni-file-picker组件 函数返回name: "image", //文件名字header: {Authorization: "Bearer " + wxToken,},formData: formDataObj,success: (res) => {const { data } = JSON.parse(res.data);console.log(data);this.weightData.img_url = data.url;uni.showToast({title: "图片上传成功",icon: "success",duration: 2000, // 提示持续时间,单位为毫秒});},fail: (e) => {console.log(e);},});}/*#endif*//*#ifdef H5*/let Token = localStorage.getItem("token");let baseURL = localStorage.getItem("baseURL");// 检查是否成功获取到值if (Token) {uni.uploadFile({url: `${baseURL}...`, //需要传图片的后台接口filePath: filePath, // 上传图片 通过uni-app的uni-file-picker组件 函数返回name: "image", //文件名字header: {Authorization: "Bearer " + Token,},formData: formDataObj,success: (res) => {console.log(JSON.parse(res.data));const { data } = JSON.parse(res.data);console.log(data);this.weightData.img_url = data.url;uni.showToast({title: "图片上传成功",icon: "success",duration: 2000, // 提示持续时间,单位为毫秒});},fail: (e) => {console.log(e);},});}/*#endif*/// 可以添加上传进度监听等额外逻辑} catch (error) {console.error("上传图片时发生错误", error);}},onFilePickerCancel() {console.log("取消选择");// 可以在这里处理取消选择的逻辑},},

css样式代码

隐藏样式的重点是 opacity: 0;

    .weightPage-upload-but {position: absolute;width: 279px;height: 100px;z-index: 1;left: 0px;opacity: 0;padding: 10px;}.weightPage-item-upload-img {width: 80px;height: 78px;border-radius: 10px;}.weightPage-item-upload-text {font-size: 12px;font-weight: 500;line-height: 19px;color: rgba(153, 153, 153, 1);flex: 1;padding: 10px;}

您好,我是肥晨。
欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C语言——内存管理
  • 一个C++模板工厂的编译问题的解决。针对第三方库的构造函数以及追加了的对象构造函数。牵扯到重载、特化等
  • 【BUG】已解决:SyntaxError:positional argument follows keyword argument
  • 深入理解Linux网络(八):内核如何发送网络包
  • 【C++】红黑树的全面探索和深度解析
  • 使用docker swarm搭建ruoyi集群环境
  • nosql--redis
  • 100个python的基本语法知识【上】
  • 2019年9月全国英语等级考试第三级笔试真题
  • 接口自动化测试框架实战-4-日志方法封装
  • 大屏数据看板一般是用什么技术实现的?
  • LC617-合并二叉树
  • 【11】微服务链路追踪SkyWalking
  • Django cursor()增删改查和shell环境执行脚本
  • 分享从零开始学习网络设备配置--任务6.1 实现计算机的安全接入
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • Docker: 容器互访的三种方式
  • Js基础知识(四) - js运行原理与机制
  • MySQL的数据类型
  • Python 反序列化安全问题(二)
  • Vim Clutch | 面向脚踏板编程……
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 优化 Vue 项目编译文件大小
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​Java并发新构件之Exchanger
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​香农与信息论三大定律
  • #{}和${}的区别是什么 -- java面试
  • #HarmonyOS:Web组件的使用
  • $().each和$.each的区别
  • (c语言)strcpy函数用法
  • (zhuan) 一些RL的文献(及笔记)
  • (多级缓存)缓存同步
  • (一)kafka实战——kafka源码编译启动
  • (一)插入排序
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .net Signalr 使用笔记
  • .net 设置默认首页
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .net6+aspose.words导出word并转pdf
  • .net反编译的九款神器
  • .net与java建立WebService再互相调用
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • @vue/cli脚手架
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • []C/C++读取串口接收到的数据程序
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [AIGC] 使用Curl进行网络请求的常见用法