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

ops/2024/10/20 6:39:48/

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/ops/5663.html

相关文章

java+idea+mysql采用医疗AI自然语言处理技术的3D智能导诊导系统源码

javaideamysql采用医疗AI自然语言处理技术的3D智能导诊导系统源码 随着人工智能技术的快速发展&#xff0c;语音识别与自然语言理解技术的成熟应用&#xff0c;基于人工智能的智能导诊导医逐渐出现在患者的生活视角中&#xff0c;智能导诊系统应用到医院就医场景中&#xff0c…

蓝桥杯第十五界软件测试线下省赛题目分析及解决

PS 需要第十五界蓝桥杯被测系统或者功能测试模板、单元测试被测代码、自动化测试被测代码请加&#x1f427;:1940787338 备注&#xff1a;15界蓝桥杯省赛软件测试 题目1&#xff1a;功能测试 题目描述 ​ 某物流公司的货运收费标准根据重量、距离和节假日三个因素来确定。如…

【c++】vector的使用

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;我们本篇来到一个新的容器&#xff0c;vector的讲解和使用 目录 1.vector简单介绍2.vector的使用2.1构造函数2.2遍历vector2.3对容量操作2.4vector的增删查改 1.v…

3DGS渐进式渲染 - 离线生成渲染视频

总览 输入&#xff1a;环绕Object拍摄的RGB视频 输出&#xff1a;自定义相机路径的渲染视频&#xff08;包含渐变效果&#xff09; 实现过程 首先&#xff0c;编译3DGS的C代码&#xff0c;并跑通convert.py、train.py和render.py。教程如下&#xff1a; github网址&#xf…

Rokid AR Lite空间计算套装发布,软硬件全面升级推动居家、出行、户外场景大规模应用

4月20日&#xff0c;以“好玩、好看、好上头”为主题的Rokid Open Day 2024发布会在杭州举行&#xff0c;Rokid对外正式发布新一代AR Lite空间计算套装&#xff0c;分享了近期Rokid在AR开发者生态和数字文化领域的进展和成果&#xff0c;并宣布了多项跨行业重磅合作。作为中国代…

【架构】Elasticsearch+Logstash+Kibana架构

目录 什么是ELK ELK架构的应用场景 什么是ELK ELK是由Elasticsearch、Logstash和Kibana三个开源项目组成的技术栈&#xff0c;广泛用于搜索、日志管理和日志分析。这三个组件协同工作&#xff0c;提供了一个强大的方法来收集、存储、搜索和可视化日志数据和其他时间序列数据…

antDesign Form表单校验(react)

<script><Form name"basic" ref{formRef} onFinish{onFinish}><Form.Itemlabel校验name"check"rules{[// 校验必填{required: true,message: 请输入&#xff01;},// 校验输入字符数限制{validator: (_, value) >value && value…

【AIGC】文本与音频生成引领行业革新

AIGC技术崛起 一、AIGC技术概述二、文本生成&#xff1a;结构化与创作型并进三、实例与代码解析四、音频生成&#xff1a;语音合成技术大放异彩五、结语 在科技的浪潮中&#xff0c;人工智能与大数据的结合不断推动着时代的进步。其中&#xff0c;AIGC&#xff08;Artificial I…