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

embedded/2024/10/17 23:36:49/

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/embedded/4052.html

相关文章

2024 极术通讯-Arm 推出新一代 Ethos-U AI 加速器及全新物联网参考设计平台

导读&#xff1a;极术社区推出极术通讯&#xff0c;引入行业媒体和技术社区、咨询机构优质内容&#xff0c;定期分享产业技术趋势与市场应用热点。 芯方向 Neoverse S3 系统 IP 为打造机密计算和多芯粒基础设施 SoC 夯实根基 Arm Neoverse S3 作为针对基础设施的第三代系统 I…

[蓝桥杯 2018 省 A] 航班时间

题目链接&#xff1a;航班时间 显然&#xff1a;去程时间飞行时间时差&#xff0c;回程时间飞行时间-时差 列方程组可知&#xff1a;飞行时间&#xff08;去程时间回程时间&#xff09;/2 本道题目还有一个难点在于如何读入和输出&#xff1a;可以采用scanf&#xff08;&…

记一次 Java 应用内存泄漏的定位过程

问题现象 最近&#xff0c;笔者负责测试的某个算法模块机器出现大量报警&#xff0c;报警表现为机器CPU持续高占用。该算法模块是一个优化算法&#xff0c;本身就是CPU密集型应用&#xff0c;一开始怀疑可能是算法在正常运算&#xff0c;但很快这种猜测就被推翻&#xff1a;同…

fatal: Out of memory, malloc failed

git 切分支&#xff0c;或者clone仓库的时候碰到这个错误&#xff0c;看网上很多配置config文件&#xff0c;都尝试了没效果。 自测了一个可行的方式&#xff1a; 由于本人用的sourcetree 所以解决方式如下&#xff1a; git升级为最新版&#xff0c;选择系统GIt版本&#xf…

项目7-音乐播放器3(删除模块+播放音乐模块设计)

1.播放音乐模块设计 1.1 请求响应设计 请求&#xff1a; { get, /music/get?pathxxx.mp3 } 响应&#xff1a; { 音乐数据本身的字节信息 } 1.2 后端代码 1. Files.readAllBytes(String path) : 读取文件中的所有字节&#xff0c;读入内存 &#xff…

11:HAL--定时器代码总结

下面文章没有提定时器的都默认为通用定时器&#xff0c;提了的为高级定时器 如果没有使用HAL_TIM_ConfigClockSource&#xff08;&#xff09;函数来配置时钟源的话默认为&#xff0c;使用内部时钟源来触发CNT计数器。 通道1必须使用---TI1FP1&#xff1b;通道2必须使用TI2FP2&…

面试:lock 和 synchronized

一、语法层面 synchronized 是关键字&#xff0c;源码在jvm中&#xff0c;用c语言实现Lock 是接口&#xff0c;源码由jdk提供&#xff0c;用java语言实现使用synchronized时&#xff0c;退出同步代码块锁会自动释放&#xff0c;而使用Lock时&#xff0c;需要手动调用unlock方法…

(二十)C++自制植物大战僵尸游戏僵尸进攻控制实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs 文件位置 实现功能的代码文件位置在Class\Scenes\GameScene文件夹中&#xff0c;具体如下图所示。 ZombiesAppearControl.h /* 僵尸出现波数控制 */ class ZombiesAppearControl { public:/***对于进攻的不同波数…