vue3使用阿里oss上传资源(上传图片、视频、文件、pdf等等),删除oss资源。获取STS token的接口

news/2025/1/3 16:04:52/

vue3使用阿里oss上传资源

全部oss.ts代码如下:

javascript">import OSS from "ali-oss";// 获取STS token
export const getSTSToken = async () => {const STS_TOKEN_URL = "....."; // 获取STS token的接口,后端提供// fetch方式可按需更换成axiosconst res = await fetch(STS_TOKEN_URL).then(res => res.json());const { stsToken, accessKeySecret, accessKeyId } = res.data || {};return {stsToken,accessKeySecret,accessKeyId};
};// 初始化OSS client实例
export const initOSSClient = async () => {const token = await getSTSToken();// 可按需选择是挂载在window 还是其他变量上window.globalOSSClient = new OSS({region: "xxxxxxxx", //根据那你的Bucket地点来填写accessKeyId: token.accessKeyId, //自己账户的accessKeyId,这里getSTSToken通过后端获取accessKeySecret: token.accessKeySecret, //自己账户的accessKeySecret,这里getSTSToken通过后端获取stsToken: token.stsToken, // stsToken,这里getSTSToken通过后端获取refreshSTSToken: async () => {const tokenInfo = await getSTSToken();return tokenInfo;},// 刷新临时访问凭证的时间间隔,单位为毫秒。refreshSTSTokenInterval: 300000,bucket: "xxxxxxx" //bucket名字//secure: true, // 上传链接返回支持https});
};
// 删除oss的资源
export const delOSSUrl = url => {if (!url) return;const defaulUrl = new URL(url).origin + "/";const urlNew = url.replace(defaulUrl, "");window.globalOSSClient.delete(urlNew).then(res => {console.log("res", res);});
};
  1. 采用SDK的方法,先npm i ali-oss安装oss。

  2. 进入项目或者页面时,调用initOSSClient方法,初始化OSS client实例,从而获取STS token

  3. 当通过vantui或者elementui,或者其他方式拿到文件的file时,调用window.globalOSSClient.put(fileName, file)即可。

javascript">// 使用上传oss的页面
<script setup lang="ts" name="Tools">
import { onBeforeMount } from "vue";
import { initOSSClient, delOSSUrl } from "@/utils/oss.ts";
onBeforeMount(() => {//初始化OSS client实例initOSSClient();
});
// 需要上传的时候,调用
const putFileToOss= fileObj => {const { file } = fileObj;window.globalOSSClient.put(file.name, file).then(res => {console.log("oss-res", res);const { url } = res;if (url) {userInfo.value.certificateImgs.push(url);}}).catch(() => {console.log("oss服务错误");});
};
// 在需要替换逻辑,或者删除逻辑的时候,记得调用delOSSUrl,删除oss上的资源
// delOSSUrl(url)
//
</script>

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

相关文章

C#使用ftp进行文件上传和下载功能(一)

一.FTP概述 FTP (File Transfer Protocol&#xff0c;文件传输协议)是典型的C/S架构的应用层协议&#xff0c;需要由服务端软件、客户端软件两个部分共同实现文件传输功能。FTP客户端和服务器之间的连接是可靠的&#xff0c;面向连接的&#xff0c;为数据的传输提供了可靠的保证…

ChatGPT4.5:能力大提升,全新体验

说明 ChatGPT4是2023年的5月份发布的&#xff0c;马上就发布一周年了。其他的大语言模型&#xff0c;比如Claude和开源的Lama也相继更新了最新版本。而根据目前国外发布的各种消息来看&#xff0c;ChatGPT4.5也即将发布。 GPT-4.5 Turbo 发布时间 最新消息显示&#xff0c;Op…

阿里云ECS迁移至AWS EC2,九河云详细教程

在客户在求更大的海外市场&#xff0c;综合考虑后决定选择AWS云&#xff0c;但对迁移方面不太了解&#xff0c;甚至比较担心如果到AWS云是否业务要从0开始&#xff1f;本文九河云将为您介绍如何将阿里云ECS平滑迁移至AWS。 工具介绍 AWS Application Migration Service &…

React中子传父的方式及原理

方式挺多的&#xff0c;先说最常用的通过props进行父子组件的数据传递和修改以及原理 在React中&#xff0c;props不仅用于传递数据&#xff0c;它们也可以传递可以执行的函数&#xff0c;这使得子组件能够间接更新父组件的状态。这种方法强化了React的单向数据流策略&#xf…

【Qt】Qt中代替C语言scanf和gets函数的方法

1、图形界面 Qt可以使用图像界面控件获取输入(这不废话吗?) 1)QLineEdit获取单行输入 QLineEdit *lineEdit = new QLineEdit(); // 单行输入框 QString strTextInput = lineEdit->text(); // 获取输入内容2)QTextEdit 获取多行输入框 QTextEdit *textEdit =

跨平台SIP 客户端-linphone下载、使用、开启视频H264

linphone 介绍 Linphone 是一种开源的语音和视频通信应用程序&#xff0c;它提供了基于互联网协议&#xff08;IP&#xff09;的实时通信功能。用于语音/视频通话、即时消息和电话会议的开源 SIP 电话。它适用于移动和桌面环境&#xff08;iOS、Android、GNU/Linux、macOS、Win…

厂区3D全景线上漫游体验突破现实时空阻碍

智慧园区&#xff0c;作为现代城市发展的重要引擎&#xff0c;其管理效率和安全监控的需求日益凸显。而720VR全景展示技术的引入&#xff0c;无疑为智慧园区的建设注入了新的活力。通过360全空间无死角的视觉展示&#xff0c;用户可以身临其境地感受园区的每一个角落&#xff0…

GRU之我见(含案例讲解)

GRU&#xff08;Gated Recurrent Unit&#xff09;是一种常用于处理序列数据的深度学习模型&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;和时间序列分析领域。它是一种循环神经网络&#xff08;RNN&#xff09;的变种&#xff0c;旨在解决长期依赖和梯度消失问…