vue3+ant design vue实现文件上传(阿里云oss)~

news/2024/9/20 1:31:16/ 标签: vue.js, 前端, javascript

1、效果图

2、自定义上传

<a-upload
v-model:file-list="fileList"
name="导入员工"
action=""
:customRequest="upDown"
:beforeUpload="beforeUpload"
:onChange="handleChange"
@remove="removeFile"
accept=".xlsx,.xls"
><a-button class="btn btn_width" type="primary"> 上传Excel </a-button>
</a-upload>

import {queryAutograph,uploadOss,} from '@/api/import';
// 存储文件const fileList = ref<any[]>([]);// 导入文件const upDown = async (file) => {const random = Math.random();const fileName = `${random}${file.file.name}`;//获取oss签名queryAutograph({}).then(async (res) => {
//根据后端上传接口按需解构(这里是oss上传)const { host, dir, OSSAccessKeyId, success_action_status, Signature, policy } = res;const address = dir + fileName;const url = host;const formData = new FormData();formData.append('key', address);formData.append('OSSAccessKeyId', OSSAccessKeyId);formData.append('Signature', Signature);formData.append('policy', policy);formData.append('success_action_status', success_action_status);formData.append('file', file.file);//这里必须放在最后,上面的顺序不限制// 上传OSStry {await uploadOss({ url, formData });} catch (e) {message.error('上传失败');return;}//拼接文件地址,用来传递给后端接口downloadUrl.value = host + '/' + address;let list: any = [];list.push({ name: file.file.name, url: downloadUrl });// fileList.value = list.flatMap((item) => item.url);fileList.value = list;});};// 删除文件const removeFile = (file) => {const index = fileList.value.indexOf(file.file);const newFileList = fileList.value.slice();newFileList.splice(index, 1);fileList.value = newFileList;console.log('删除成功:', fileList.value);};
// 文件上传测试import { message } from 'ant-design-vue';// 检查文件类型,如果文件类型正确,则继续上传,false指停止上传,true指继续上传,file是文件const beforeUpload = (file) => {// // 检查文件类型是否为Excelconst isExcel =file.type === 'application/vnd.ms-excel' ||file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';if (!isExcel) {message.error('只能上传Excel文件!');return false;}return true;};
import { request } from '@/utils/request';
const VUE_APP_OSS_API = process.env.VUE_APP_OSS_API;
const VUE_APP_VOICE_API = process.env.VUE_APP_VOICE_API;// OSS上传签名
export function queryAutograph(params) {return request({url: `${VUE_APP_VOICE_API}/oss/getSign`,method: 'get',params,});
}
// 上传OSS 请求
export const uploadOss = ({ url, formData }) => {const pro = process.env.NODE_ENV === 'development' ? VUE_APP_OSS_API : url;return request({url: pro,method: 'post',data: formData,headers: { 'Content-Type': 'multipart/form-data' },});
};

 3、思路:做文件上传时,一般使用自定义上传行为,用来覆盖默认行为,首先创建new FormData();及相关上传参数,并调用oss签名接口,拿到返回的host值之后拼接文件地址便于后面调用添加接口上送。(注意:这里使用的阿里云oss上传时,若遇到404情况,可考虑不使用代理,直接直传)

4、若不使用阿里云oss做文件上传时,可不需获取签名,创建完new FormData();及相关参数之后,直接调用后端上传接口即可。

// 存储文件const fileList = ref<any[]>([]);// 导入文件const upDown = async (file) => {fileList.value = [];fileList.value.push(file.file);const formData = new FormData();formData.append('file', fileList.value[0]);await importData(formData).then((res) => {message.info('文件上传成功');// downloadUrl.value = `${platformApi}/dataCockpit/out/common/get-sheet-from-excel`;console.log('导入成功:', res);console.log('文件列表:', fileList.value);}).catch((err) => {message.error(err);});
}


http://www.ppmy.cn/news/1523453.html

相关文章

使用MATLAB进行动力学分析与可视化

目录 一、动力学与MATLAB概述 二、动力学系统的建模 1. 简谐振子 2. 单摆 三、动力学系统的仿真 1. 使用ode45求解简谐振子 2. 使用ode45求解单摆 四、动力学结果的可视化 1. 二维曲线图 2. 相空间图 3. 三维曲面图 4. 动画制作 五、复杂动力学系统的建模与仿真 1…

数据恢复的基石:MySQL中的存储管理策略

在企业数据管理中&#xff0c;数据恢复的存储管理是确保数据安全和业务连续性的关键环节。MySQL作为广泛使用的数据库系统&#xff0c;其数据恢复的存储管理对于优化备份存储、提高恢复效率和保障数据完整性至关重要。本文将深入探讨如何在MySQL中实现数据恢复的存储管理&#…

OpenCV仿射变换和透视变换函数(C++)

文章目录 引言图像仿射变换 warpAffine()图像的旋转仿射变换 透视变换 warpPerspective()透视变换例子参考文献 **仿射变换相关函数** cv::transform()&#xff1a;对一组点进行仿射变换 cv::warpAffine()&#xff1a;对整幅图像进行仿射变换 cv::getAffineTransform()&#xf…

Qt篇——Qt在msvc编译下提示“C2001:常量中有换行符“的错误

在pro文件中添加以下配置即可&#xff1a; msvc{QMAKE_CFLAGS /utf-8QMAKE_CXXFLAGS /utf-8 }

Flask中的上下文(Context)

Flask中的上下文&#xff08;Context&#xff09;是一个核心概念&#xff0c;它对于理解和使用Flask框架进行Web开发至关重要。上下文在编程中通常指的是程序执行到某一时刻时&#xff0c;环境所提供的一系列状态信息&#xff0c;这些状态信息可以是变量、函数、类等&#xff0…

[Redis] Redis中的String类型

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

【机器学习】12. 线性回归 Residual 残差系数 R方

Sum of Squares Total (SST) 单个数据点&#xff08;观测值&#xff09;于响应变量的均值差的平方和。 Sum of Squares Regression (SSR) 预测值ŷi与响应变量均值差的平方和。 Sum of Squares Error (SSE) 预测值ŷi与观测值差的平方和。 R 2 1 − S S E / S S T S S R / …

前端技术(七)——less 教程

一、less简介 1. less是什么&#xff1f; less是一种动态样式语言&#xff0c;属于css预处理器的范畴&#xff0c;它扩展了CSS语言&#xff0c;增加了变量、Mixin、函数等特性&#xff0c;使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 &#xff0c;也可以借助Node.js在服…

一台笔记本电脑的硬件都有哪些以及对应的功能

一台笔记本电脑的硬件通常包括多个关键组件&#xff0c;这些组件共同协作&#xff0c;确保电脑的正常运行。以下是笔记本电脑的主要硬件及其功能&#xff1a; 1. 中央处理器&#xff08;CPU&#xff09; 功能&#xff1a;CPU 是电脑的“大脑”&#xff0c;负责处理所有的计算…

bit-fields 生成macros

‌Bit-Fields Macros定义‌ Bit-fields macros是在C或C语言中&#xff0c;‌利用宏定义&#xff08;‌macros&#xff09;‌来方便地创建和操作位字段&#xff08;‌bit-fields&#xff09;‌的一种方式。‌位字段常用于节省内存&#xff0c;‌通过在一个字节中打包多个布尔值或…

【PHP小课堂】简单入门PHP中的过滤器相关函数

简单入门PHP中的过滤器相关函数 一般在业务开发中&#xff0c;我们对于一些参数数据的过滤大部分还是使用传统的 if 以及正则进行判断过滤。但其实 PHP 中也提供了一些过滤器&#xff0c;可以帮助我们方便地进行数据的过滤筛选以及部分替换操作。今天我们就来简单的学习一下这些…

设计模式之状态模式 (C++ 实现)

设计模式是软件开发中的一项重要技能&#xff0c;它提供了一种通用的解决方案以应对不同的设计问题。状态模式是一种行为型设计模式&#xff0c;适用于对象在不同状态下表现出不同的行为。通过实现状态模式&#xff0c;可以让代码更清晰、更易扩展与维护。本文将通过C实现状态模…

【开发工具】Maven Dependency Helper:IntelliJ IDEA的贴心助手,助力梳理依赖关系

一、引言 在Java项目开发过程中&#xff0c;依赖管理是一个至关重要的环节。Maven作为一个优秀的构建工具&#xff0c;已经成为了Java项目标配。然而&#xff0c;在管理项目依赖时&#xff0c;我们常常会遇到各种问题&#xff0c;如依赖冲突、依赖版本不兼容等。为了让开发者更…

菜鸟养成记第10集(滑窗算法)

固定窗口 示例 假设有一个数组 nums [1, 3, -1, -3, 5, 3, 6, 7]&#xff0c;我们需要找到长度为 3 的最大子数组之和。 nums [1, 3, -1, -3, 5, 3, 6, 7] window_size 3 max_sum float(-inf)for i in range(len(nums) - window_size 1):current_sum sum(nums[i:i wi…

华为OD机试 - 最大相连男生数 - 矩阵(Java 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;E卷D卷A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加…

数据结构代码集训day16(适合考研、自学、期末和专升本)

本题来自B站up&#xff1a;白话拆解数据结构 今日题目就一个&#xff1a;约瑟夫环问题。 一个圈共有N个人&#xff08;N为不确定的数字&#xff09;&#xff0c;第一个人的编号为0或者1&#xff08;两个都可以&#xff0c;看你的程序如何编写&#xff09;&#xff0c;假设这边我…

通过SSH服务远程操作Linux(ubuntu)主机

首先SSH是什么&#xff1f;SSH&#xff08;Secure SHell&#xff09;是Linux、Unix、Mac及其他网络设备最常用的远程CLI管理协议&#xff0c;SSH使用秘钥对数据进行加密&#xff0c;保证了远程管理数据的安全性。Secure Shell (SSH) 是一种网络协议&#xff0c;允许用户通过加密…

算法设计与分析第一堂课笔记复习

算法是解决问题的一种方法或一个过程&#xff0c;是由若干条指令组成的又穷序列&#xff0c; 算法的性质 输入&#xff1a;有零个或多个输出&#xff1a;“至少一个”确定性&#xff1a;组成算法的每条指令清晰无歧义有限性&#xff1a;算法中每条指令和执行次数和执行时间都是…

NASA数据集:ASTER L2 地表辐射率 VNIR 和 SWIR V003

目录 简介 摘要 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ASTER L2 地表辐射率 VNIR 和 SWIR V003 简介 ASTER 地表辐照度可见近红外和短波红外(AST_09)是一个多文件产品(https://lpdaac.usgs.gov/documents/996/ASTER_Earthdata_Search_Order_Instruct…

考场考生行为检测数据集 7000张 带标注 voc yolo

数据集名称&#xff1a; 考场考生行为检测数据集 数据集规模&#xff1a; 图像数量&#xff1a;7000张标注类型&#xff1a;行为检测&#xff08;例如&#xff1a;作弊、玩手机、睡觉等&#xff09;格式兼容性&#xff1a;支持VOC和YOLO标注格式 数据集内容&#xff1a; 该…