vue中使用minio上传文件
创建一个 文件getOssClient
import { getOssSetting } from "@/api/common";
import Vue from "vue";
import { getCookies, getLocal } from "@/utils/auth"; // get token from cookie
export async function getStsToken() {//从后台获取stsTokenif (getCookies("token")) {const res = await getOssSetting();if (res.code == 200) {Vue.prototype.$ossClient = getClient(res.data);}}}
export function getClient(data) {const Minio = require('minio');
let endpointes=data.endpoint.indexOf("//")>0?data.endpoint.substring(data.endpoint.indexOf('//')+2,data.endpoint.length):data.endpoint
let endpoints =endpointes.lastIndexOf(':')>0?endpointes.substring(0,endpointes.lastIndexOf(':')):endpointes
let port =Number(data.endpoint.lastIndexOf(':')>0?data.endpoint.substring(data.endpoint.lastIndexOf(':')+1,data.endpoint.length):80)
let minio={endPoint: endpoints, //文件服务器地址port:port,//文件服务器端口useSSL: false,accessKey: data.accessKey,// 文件服务器账号secretKey: data.secretKey, // 文件服务器密码 bucket:data.bucketName, sessionToken:data.securityToken,fileKey:data.fileKey
}
Vue.prototype.$minioInfo = minio;
const minioClient = new Minio.Client(minio)return minioClient;
}getStsToken()
上传组件中使用 打开上传就会拿到key

async handleUploadFile(e) {this.uploadArr.push(e);if (!this.btnLoading) {this.btnLoading = true;this.$emit("uploaded", true);}if (this.isUploading) {this.progressFlag = truethis.loadProgress = 35this.isUploading = false;const upload = (e) => {uploadFile(e.file, e.file.name, this.$ossClient,this.$minioInfo).then((res) => {this.loadProgress = 100this.progressFlag = falsethis.btnLoading = false;let newItem = this.addType({ ...res });this.previewImgList.push(newItem);this.isUploading = true;if (this.previewImgList.length < this.uploadArr.length) {let item = this.uploadArr[this.previewImgList.length];upload(item);} else {this.$emit("uploaded", false);this.btnLoading = false;this.$emit("uploadSuccess", this.previewImgList);}}).catch(() => {this.$emit("uploaded", false);this.btnLoading = false;this.isUploading = true;this.loadProgress = 0this.progressFlag = false});};upload(e);}},
// 上传文件
export function uploadFile(f , fileName, client,minioInfo) {try {let suffix = fileName.substr(fileName.lastIndexOf("."));let num = getNum(6, 10);let storeAs = suffix.substr(1) + "/" + new Date() * 1 + "/" + num + suffix;let reader = new FileReader();reader.readAsArrayBuffer(f);return new Promise((resolve, reject) => {reader.onload = function (e) {let res = e.target.result;//ArrayBufferlet buf = Buffer.from(res);//Buffer const metaData = {'content-type': f.type,'content-length': f.size}return client.putObject(minioInfo.bucket, storeAs, buf, f.size, metaData,function (err, data) {if (err){myMessage({message: err,type: "error",duration: 5 * 1000,});}else{let obj = {};obj.fileKey = storeAs;obj.originalName = fileNamelet urls=minioInfo.endPoint.indexOf("//")>0?minioInfo.endPoint:('http://'+minioInfo.endPoint)obj.url = `${urls}:${minioInfo.port}/${minioInfo.bucket}/${storeAs}`;resolve(obj)}});}})} catch (e) {}
}
相关文章:
vue中使用minio上传文件
创建一个 文件getOssClient import { getOssSetting } from "/api/common"; import Vue from "vue"; import { getCookies, getLocal } from "/utils/auth"; // get token from cookie export async function getStsToken() {//从后台获取stsTo…...
MySQL表的增删改查(初阶)
CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。且增删改查(CRUD,create,retrieve,update,delete)数据库的核心模块。 1. 新增(Create) 实…...
搜维尔科技:关于“第九届元宇宙数字人设计大赛”线上+线下巡回宣讲本周高校行程通告!
为了让大家更全面地了解此次大赛,顺利地进行大赛的报名和参赛,组委会遴选了一批优秀讲师代表,组建了宣讲团,以线上线下的方式陆续开展巡回宣讲。宣讲兼顾不同学生群体的需求,结合在数字人设计制作的过程中常见的疑难点…...
Gemini 1.0:Google推出的全新AI模型,改变生成式人工智能领域的游戏规则!
Gemini 1.0:Google推出的全新AI模型,将改变生成式人工智能领域的游戏规则! 🎥 屿小夏 : 个人主页 🔥个人专栏 : IT杂谈 🌄 莫道桑榆晚,为霞尚满天! 文章目录 …...
excel打开并操作CAD(excel-vba实现)_另附:CAD打开excel
excelvba可实现调用cad应用程序,并通过excel内置api弹窗实现打开、另存CAD 文件(cad-vba弹窗功能较为麻烦),代码如下(在excel_vba环境下操作): Sub excel_vba打开另存并操作CAD文件() Dim cad …...
Prolist组件实现动态竖排展示
实现原理:主要是利用外层div属性display:"flex",overflowX: auto,配合内层prolist样式属性flex:"0 0 auto",overflowX:"auto",width:"350px",height:900,实现动态竖排展示 <div style{{display:…...
基于JAVA的海南旅游景点推荐系统 开源项目
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户端2.2 管理员端 三、系统展示四、核心代码4.1 随机景点推荐4.2 景点评价4.3 协同推荐算法4.4 网站登录4.5 查询景点美食 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的海南旅游推荐系统ÿ…...
【Apache-StreamPark】Flink 开发利器 StreamPark 的介绍、安装、使用
【Apache-StreamPark】Flink 开发利器 StreamPark 的介绍、安装、使用 1)框架介绍与引入1.1.🚀 什么是 StreamPark1.2.🎉 Features1.3.🏳🌈 组成部分1.4.引入 StreamPark 2)安装部署2.1.环境要求2.2.Hado…...
【STM32】STM32学习笔记-LED闪烁 LED流水灯 蜂鸣器(06-2)
00. 目录 文章目录 00. 目录01. GPIO之LED电路图02. GPIO之LED接线图03. LED闪烁程序示例04. LED闪烁程序下载05. LED流水灯接线图06. LED流水灯程序示例07. 蜂鸣器接线图08. 蜂鸣器程序示例09. 下载10. 附录 01. GPIO之LED电路图 电路图示例1 电路图示例2 02. GPIO之LED接线图…...
docker服务启动报错docker.service holdoff time over, scheduling restart.
docker服务启动报错docker.service holdoff time over, scheduling restart. 卸载docker 卸载安装包 yum remove -y docker docker-client docker-client-latest docker-ce-cli docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinu…...
cfa一级考生复习经验分享系列(八)
先分析一下CFA Level 1内容,考试总体难度并不大,每门课程都比大学本科开设的对应课程简单,但是因为有十门课综合在一起,知识点相对算比较多,内容较多。但对知识点的掌握要求不高,理解即可。比如财报&#x…...
React中的事件处理
React中的事件处理 亲爱的同学们,今天我们将一起探索React中的一个非常实用的话题:事件处理。当我们谈论事件处理,我们指的是在用户与我们的应用程序交互时发生的各种情况,比如点击一个按钮或是提交一个表单。这些动作是我们如何让…...
德人合科技 | 公司电脑文件加密系统
公司电脑文件加密系统是一种可以对电脑文件进行加密的保护机制。它使用驱动层透明加密技术,能够在用户无感知的情况下对文件进行加密,从源头上保障数据安全和使用安全。 PC端访问地址: www.drhchina.com 此类系统主要有以下几个特点和功能&a…...
FinalShell的下载、安装及基本使用
一:引言 FinalShell 是一体化的的服务器,网络管理软件,不仅是 ssh 客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求. 主要特性: 1.多平台支持 Windows,macOS,Linux 2.多标签,批量服务器管理. 3.支持登录 ssh 和 Windows 远程桌面. 4.漂亮的…...
华为实训课笔记 2023
华为实训 12/1312/1412/1812/19 12/13 ping 基于ICMP协议,用来进行可达性测试 ping 目的IP地址/设备域名(主机名) 如果能收到 reply 回复,则表示双方可以正常通信。一次正常的数据通信必须是有去有回。 <Huawei>用户视图&a…...
图灵日记之Leetcode链表中间结点牛客链表中倒数第k个结点Leetcode合并两个有序链表leetcode反转链表
题目 链表的中间结点原题入口题目内容题目解析思路一代码实现一思路二代码实现二 链表中倒数第k个结点题目链接题目内容思路代码实现 合并两个有序链表原题入口题目内容思路代码实现 反转链表题目传送入口题目内容思路一代码复现一思路二代码实现二 链表的中间结点 原题入口 …...
条款5:了解c++默默编写并调用了哪些函数
如果你不自己声明,编译器会替你声明(编译器版本的)拷贝构造函数、拷贝赋值运算符和析构函数。此外,如果你没有声明任何构造函数,编译器会为你声明一个默认构造函数。 class Empty{};本质上和写成下面这样是一样的: c…...
Apache RocketMQ 5.0 腾讯云落地实践
Apache RocketMQ 发展历程回顾 RocketMQ 最早诞生于淘宝的在线电商交易场景,经过了历年双十一大促流量洪峰的打磨,2016年捐献给 Apache 社区,成为 Apache 社区的顶级项目,并在国内外电商,金融,互联网等各行…...
FIFO的Verilog设计(三)——最小深度计算
文章目录 前言一、FIFO的最小深度写速度快于读速度写速度等于或慢于读速度 二、 举例说明1. FIFO写时钟为100MHz,读时钟为80Mhz情况一:一共需要传输2000个数据,求FIFO的最小深度情况二:100个时钟写入80个数据,1个时钟读…...
JavaWeb笔记之JavaWeb JDBC
//Author 流云 //Version 1.0 一. 引言 1.1 如何操作数据库 使用客户端工具访问数据库,需要手工建立连接,输入用户名和密码登录,编写 SQL 语句,点击执行,查看操作结果(结果集或受影响行数)。…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)
注:文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件:STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...
如何做好一份技术文档?从规划到实践的完整指南
如何做好一份技术文档?从规划到实践的完整指南 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...
大模型真的像人一样“思考”和“理解”吗?
Yann LeCun 新研究的核心探讨:大语言模型(LLM)的“理解”和“思考”方式与人类认知的根本差异。 核心问题:大模型真的像人一样“思考”和“理解”吗? 人类的思考方式: 你的大脑是个超级整理师。面对海量信…...
零基础在实践中学习网络安全-皮卡丘靶场(第十一期-目录遍历模块)
经过前面几期的内容我们学习了很多网络安全的知识,而这期内容就涉及到了前面的第六期-RCE模块,第七期-File inclusion模块,第八期-Unsafe Filedownload模块。 什么是"遍历"呢:对学过一些开发语言的朋友来说应该知道&…...
MeanFlow:何凯明新作,单步去噪图像生成新SOTA
1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架,旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念,这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换,显…...
