uni-app 中实现文件和图片的上传-H5

news2024/9/23 18:24:50

        之前写过一篇上传的文章📕,但是那篇文章仅仅只能实现上传图片的功能,而且代码写的比较乱,看起来很繁杂,最近有幸又遇到了上传图片和文件的需求,在完成这个功能后,整理一下,希望能给需要做上传功能的人提供一些参考😊。

        首先我先展示一下我的效果图,方便需求跟我差不多的人快速决定是否继续预览本文章。

需求是:点击上传后,弹出弹框选择要传的文件类型(图片或者文件),前提是每次只能选择一个不能多选,接着就将选好的文件名、路径放在定义好的空数组里面,点击完成后调接口讲数据保存到数据库。

html部分本文不提供,只提供上传文件部分的js代码。代码如下:

//点击弹出框类型后的方法
selectClick(e) {
                let that = this
                if (e.name == '相册') {//上传图片
                    uni.chooseImage({
                        count: 3,
                        sourceType: ['album', 'camera'],
                        success(res) {
                            that.upLoadFileByUni(res)
                        }
                    })
                } else if (e.name == '文件') { //上传文件
                    uni.chooseFile({
                        count: 3, //默认100
                        extension: ['.zip', '.doc','.docx','.xlsx','.xls','.txt','.ppt','.pptx','.pdf'],//想要上传的文件类型
                        success(res) {
                            that.upLoadFileByUni(res)
                        }
                    });
                } else {
                    this.showSheet = false //关闭弹出框
                }
            },

        //上传文件
            upLoadFileByUni(res){
                let that = this
                uni.uploadFile({
                    url: 'http://xxxxxx/upload',
                    filePath: res.tempFilePaths[0],
                    name: 'files',
                    formData: {//调用上传接口需要的参数
                        type:xxx,
                        name:res.tempFiles[0].name,
                        xxx:'xx'
                    },
                    header:{
                        token:that.t0ken
                    },
                    success: (uploadFileRes) => {
                        that.showSheet = false
                        that.fileList.push(JSON.parse(uploadFileRes.data).data)
                        that.$refs.uToast.show({
                            message: '上传成功',
                            position: 'top',
                            type: 'success'
                        })
                    }
                })
            }

使用的是uni.app官方提供的方法uni.chooseFile、uni.chooseImage、uni.uploadFile,有不懂的可以直接看光网文档:uni.chooseImage(OBJECT) | uni-app官网 uni.chooseFile(OBJECT) | uni-app官网
uni.uploadFile(OBJECT) | uni-app官网

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

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

相关文章

第十四届蓝桥杯单片机组学习笔记(2):按键

第十四届蓝桥杯单片机组学习笔记(2):按键前言区分高低电平驱动按键消抖软件消抖触发处理的方式矩阵键盘最简单常用的人机交互手段——按键 前言 实现按键检测需要解决的问题: 按键是低电平按下还是高电平按下;按键消…

(1分钟速览)KBM-SLAM 论文阅读笔记

编辑切换为居中添加图片注释,不超过 140 字(可选)这篇博客记录了上面这篇论文的学习笔记。编辑切换为居中添加图片注释,不超过 140 字(可选)这个是本文的摘要,一眼开过去就是单目slam当今所遇到…

机器学习(一):人工智能概述

文章目录 人工智能概述 一、人工智能应用场景 二、人工智能小案例 三、人工智能发展必备三要素 四、人工智能、机器学习和深度学习 人工智能概述 一、人工智能应用场景 二、人工智能小案例 案例一 学习链接:https://quickdraw.withgoogle.com 案例二 学习链…

老杨说运维 | 2023,浅谈智能运维趋势(三)

文末附有视频回顾 前言: 在回顾(一)中,老杨提到的智能运维发展趋势中,面对国际化形势不确定的情况,信创部分的比例要求正在递增。作为国家经济发展的新动能,信创发展已步入深水区,智…

cv2.imread()、cv2.putText、cv2.imwrite()、cv2.waitKey()

cv2cv2.imread()cv2.putText()cv2.imwrite()cv2.waitKey()cv2.imread() 用于读取图像数据案例演示: import cv2# ouput img properties img_pathC:/Users/WHY/Pictures/Saved Pictures/OIP-C (1).jfif def funOutput…

安卓手机使用Linux Deploy安装CentOS

目录 前言 准备工作 实践 busybox安装 安装并配置Linux Deploy 局域网使用ssh连接服务器 公网使用ssh连接服务器 环境安装 写在最后 前言 最近沉迷于服务器搭建,书接上文,在安卓高版本中成功安装了服务器,但是安卓低版本的却一言难尽…

2023CUPT第七题 法拉第波 思路和解法

本文未完原题A droplet of less viscous liquid floating in a bath of a more viscous liquid develops surprising wave- like patterns when the entire system is set into vertical oscillation. Investigate this phenomenon and the parameters relevant to the product…

Webpack学习笔记

Webpack学习笔记1.引言2.Webpack相关的基础性问题3.Webpack的使用4.Webpack与代码规范和兼容性5.优化Html入口文件的处理6.实现webpack热更新7.生产模式与开发模式分析8.优化css配置,避免闪频现象9.代码压缩1.引言 最近想来自己对于前端的学习还是有很多的不足&…

毕业论文查重

每当毕业季论文编写都是一件大事,论文查重又是最让人头痛的事情,这里总结一些简单论文查重方法,希望对你有帮助。 首先通过一下系统查询重复比例,之后对照重复比例进行修改,如下图通过PaperPass论文检测进行查询生成的…

Linux安装JDK

创建develop目录 mkdir /usr/local/develop/ 我这边是直接将包拖进来了 创建jdk目录 mkdir /usr/local/develop/jdk/ 解压安装包 并且将安装文件放到 jdk目录里 tar -zxvf /usr/local/develop/jdk-8u191-linux-x64.tar.gz -C /usr/local/develop/jdk/ 或 tar -xvf /usr/l…

【信息系统项目管理师】论文写作心得整理篇

【信息系统项目管理师】论文写作心得整理篇 【信息系统项目管理师】论文写作心得整理篇【信息系统项目管理师】论文写作心得整理篇一.摘要二.论文评分标准1.切合题意2.应用深度和水平3.实践性4.表达能力5.综合能力和分析能力扣分项目加分项目不及格项目格式要求摘要的组成三.论…

Unity 工具 之 报错 Jenkins 执行/调用 Python 脚本,报错提示 ‘python‘ 不是内部或外部命令,也不是可运行的程序或批处理文件

Unity 工具 之 报错 Jenkins 执行/调用 Python 脚本,报错提示 python 不是内部或外部命令,也不是可运行的程序或批处理文件 目录 Unity 工具 之 Jenkins 执行/调用 Python 脚本,报错提示 python 不是内部或外部命令,也不是可运行…

MyBatis -- 动态 SQL

MyBatis -- 动态 SQL动态 SQL 使用1. <if> 标签2. <trim> 标签3. <where> 标签4. <set> 标签5. <foreach> 标签动态 SQL 使用 动态 sql 是 Mybatis 的强大特性之⼀&#xff0c;能够完成不同条件下不同的 sql 拼接。 可以参考官方文档&#xff…

SNARK原理示例

1. 引言 前序博客有&#xff1a; SNARK DesignRollup项目的SNARK景观 SNARK方案由 Polynomial IOP ➕多项式承诺方案 组成。 当前的Polynomial IOP主要分为三大类&#xff1a; 1&#xff09;基于interactive proofs&#xff08;IPs&#xff09;的Polynomial IOP&#xff1…

【10】C语言_for循环 | 初识 | 入门 |

目录 1、引出for循环 2、for循环语法 例题&#xff1a; 1、引出for循环 因为while的三个条件&#xff0c;如果代码写的多的时候&#xff0c;以下的三个条件离得远不好&#xff0c;所以引出三个条件在一起的for循环 int main() { int i 1; //初始化while(i < 10)…

Java基本数据类型及其包装类

内置数据类型 Java语言提供了八种基本类型。六种数字类型&#xff08;四个整数型&#xff0c;两个浮点型&#xff09;&#xff0c;一种字符类型&#xff0c;还有一种布尔型。 byte&#xff1a; byte 数据类型是8位、有符号的&#xff0c;以二进制补码表示的整数&#xff1b;…

Prometheus-Exporter详解

一、Exporter是什么 广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target&#xff0c;如下所示&#xff0c;Prometheus通过轮询的方式定期从这些target中获取样本数据: 二、Exporter的来源 从Exporter的来源上来…

26. 删除有序数组中的重复项

文章目录题目描述方法一 双指针-while方法二 双指针-for题目描述 给你一个 升序排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能…

数字图像处理---空间滤波基础

空间滤波概念 滤波&#xff1a;通过修改或者抑制给定图像的特定频率分量&#xff0c;常见有低通滤波器与高通滤波器。空间滤波&#xff1a;将像素值使用该像素值及其邻域的值进行替换&#xff0c;替换方式有线性与非线性两种&#xff0c;即线性滤波器与非线性滤波器。 线性滤…

VScode快速配置C/C++环境

文章目录我安装时仅参考了这两篇分享1.下载并安装VScode 商店C/C插件2.下载MinGW-W64 x86_64-win32-seh3.配置各种.json5.Hello_world.cpp测试我安装时仅参考了这两篇分享 伸手党进&#xff1a;具体步骤主要是这篇&#xff1a;Hudiscount-Vscode配置C/C环境 MinGW-W64 x86_64-…