node或浏览器上传文件到阿里云OSS

阿里云配置

进入阿里云OSS Bucket 列表的某个 Bucket 仓库下,点击访问控制 RAM

 创建用户

勾上 创建 AccessKey ID 和 AccessKey Secret

复制 AccessKey 信息 用文档保存

创建角色

选择云账号

复制 ARN 用文档保存,然后 新增权限

搜索 oss 选择 AliyunOSSFullAccess 策略后保存

返回 oss 的 Bucket 管理页面,设置读写权限

设置跨域,创建规则,可以填写局域网地址,用于测试

点击概览,复制 Bucket 外网访问地址上的 oss-cn-地域,用文档保存

nodeJS上传

node接收文件或选择文件直接上传

const path = require('path')
const OSS = require('ali-oss')const client = new OSS({// 开启 endpoint 时 region 无效;二选一,具体区别可以看官网文档// region: 'oss-cn-shenzhen',endpoint: 'oss-cn-shenzhen.aliyuncs.com',  // Endpoint(地域节点)外网访问accessKeyId: '创建用户时复制的 AccessKey ID',accessKeySecret: '创建用户时复制的 AccessKey Secret',bucket: 'Bucket存储空间名称',// internal: true // 是否通过阿里云内部网络接入OSS// cname: true  // 默认为false,使用自定义域名访问oss。如果为true,则可以用自定义域名填充端点字段// secure: true, // 是否返回HTTPS链接,默认false,开启传输加速时必须为truetimeout: 10 * 60 * 1000 // 设置链接超时时间
})// 获取oss文件列表
async function list() {// 不带任何参数,默认最多返回100个文件。const result = await client.list()console.log(result)
}
list()// 上传文件
const putOSS = (file_name, file_path) => {return new Promise(async (resolve, reject) => {try {if (!file_name || !file_path) throw 'file_name or file_path error'const result = await client.put(file_name, path.normalize(file_path))if (result.res.status !== 200) throw 'error'resolve(result.url)} catch (err) {reject(err)}})
}putOSS('文件名称', '文件路径')

官方参考 

安装OSS Node.js SDK_对象存储(OSS)-阿里云帮助中心

Browser.js浏览器上传

浏览器上传建议使用 STS 方式来进行API访问

1、后端生成临时访问密钥

安装依赖

npm i ali-oss

后端 nodeJS 调用STS服务生成临时访问密钥

const OSS = require('ali-oss')async function getSTSToken() {const sts = new OSS.STS({accessKeyId: '创建用户时复制的 AccessKey ID',accessKeySecret: '创建用户时复制的 AccessKey Secret'})const result = await sts.assumeRole('acs:ram::*****:role/test-oss-juese', // 创建角色时生成的 ARN'', // 自定义权限策略(可选)3600, // 凭证有效期,单位为秒'sessiontest' // 自定义会话名称)console.log('AccessKeyId:', result.credentials.AccessKeyId)console.log('AccessKeySecret:', result.credentials.AccessKeySecret)console.log('SecurityToken:', result.credentials.SecurityToken)console.log('Expiration:', result.credentials.Expiration)return result.credentials // 生成的临时密钥
}const sts_token = getSTSToken()// 可以写个node接口把 sts_token 传给前端

 2、前端上传

安装依赖

npm i ali-oss

前端请求后端,获取生成的临时密钥,然后使用临时密钥 访问/上传文件

const OSS = require('ali-oss')
import axios from 'axios'let sts_token = nullconst getOssClient = () => {return new Promise(async (resolve, reject) => {try {if (!sts_token || new Date(sts_token.Expiration) <= new Date()) {const res  = await axios.get('get_sts_token') // 请求后端获取sts_tokensts_token = res.data}const { AccessKeyId, AccessKeySecret, SecurityToken } = sts_tokenconst oss_client = new OSS({// endpoint: 'https://oss-accelerate.aliyuncs.com',region: 'oss-cn-hongkong', // Bucket所在地域。以华东1(杭州)为例,填写为oss-cn-hangzhouauthorizationV4: true,accessKeyId: AccessKeyId,accessKeySecret: AccessKeySecret,stsToken: SecurityToken,bucket: 'Bucket名称',secure: true,timeout: 10 * 60 * 1000})resolve(oss_client)} catch (error) {sts_token = nullreject(error)}})
}// 测试访问文件列表
async function list() {try {const oss_client = await getOssClient()// 默认最多返回1000个文件。const result = await oss_client.list()console.log(result)} catch (e) {console.log(e)}
}
// list()async function uploadFile() {try {const ossClient = await getOssClient();const file = new File(['hello world'], 'test.txt'); // 假设是浏览器环境const filePath = 'uploads/test.txt'; // OSS 存储路径const result = await ossClient.put(filePath, file);console.log('Upload success:', result);} catch (error) {console.error('Upload failed:', error);}
}
// uploadFile()

 3、官方参考

安装和使用OSS Browser.js SDK_对象存储(OSS)-阿里云帮助中心

参数配置 

配置Client
您可以在初始化Client时按需添加配置项,例如通过timeout指定请求超时时间,通过stsToken指定临时访问凭证等。关于Browser.js支持的配置项以及配置示例,具体参数请参考下方说明。options参数说明:
accessKeyId {String}:在阿里云控制台网站上创建的访问密钥。accessKeySecret {String}:在阿里云控制台创建的访问密钥秘密。[stsToken] {String}:用于临时授权。[refreshSTSToken] {Function}:当STS信息过期时自动设置stsToken、accessKeyId、accessKeySecret的函数。返回值必须是包含stsToken、accessKeyId、accessKeySecret的对象。[refreshSTSTokenInterval] {number}:STS令牌刷新间隔时间(毫秒)。应小于STS信息的过期间隔,默认为300000毫秒(5分钟)。[bucket] {String}:您想访问的默认Bucket。如果没有Bucket,请先使用putBucket()创建一个。[endpoint] {String}:OSS区域域名。优先级高于region。根据需要设置为外网域名、内网域名或加速域名等,请参考终端节点列表。[region] {String}:Bucket数据所在的区域位置,默认为oss-cn-hangzhou。[internal] {Boolean}:是否通过阿里云内网访问OSS,默认为false。如果您的服务器也在阿里云上运行,可以设置为true以节省大量费用。[secure] {Boolean}:指示OSS客户端使用HTTPS(secure: true)还是HTTP(secure: false)协议。[timeout] {String|Number}:针对所有操作的实例级别超时时间,默认为60秒。[cname] {Boolean}:默认为false,使用自定义域名访问OSS。如果为true,则可以在endpoint字段中填写自定义域名。[isRequestPay] {Boolean}:默认为false,表示是否开启Bucket的请求者支付功能,如果为true,会向OSS服务器发送头部'x-oss-request-payer': 'requester'。[useFetch] {Boolean}:默认为false,仅在浏览器环境中生效。如果为true,意味着使用fetch模式上传对象,否则使用XMLHttpRequest。[enableProxy] {Boolean}:启用代理请求,默认为false。注意启用代理请求时,请确保已安装proxy-agent。[proxy] {String | Object}:代理URI或选项,默认为null。[retryMax] {Number}:当请求因网络错误或超时出错时自动重试发送请求的最大次数。不支持流式上传(如put、putStream、append等),因为流只能被消费一次。[maxSockets] {Number}:每个主机允许的最大套接字数。默认为无限。[authorizationV4] {Boolean}:使用V4签名。默认为false。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913799.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

26考研物理复试面试常见问答问题汇总,物理专业保研推免夏令营面试问题汇总,物理本科知识专业面试最全攻略!

还在为物理考研复试面试发愁&#xff1f;还在为物理招聘的专业面试抓狂&#xff1f;还在为即将到来的物理夏令营面试不知从何下手、翻遍了厚厚的教材却抓不住重点&#xff1f;别慌&#xff0c;接下来我会从「考研的物理复试经历」「物理面试攻略」「物理面试基础问答题汇总很全…

(5)机器学习小白入门 YOLOv:数据需求与图像不足应对策略

(1)机器学习小白入门YOLOv &#xff1a;从概念到实践 (2)机器学习小白入门 YOLOv&#xff1a;从模块优化到工程部署 (3)机器学习小白入门 YOLOv&#xff1a; 解锁图片分类新技能 (4)机器学习小白入门YOLOv &#xff1a;图片标注实操手册 (5)机器学习小白入门 YOLOv&#xff1a;…

百年制造名企,三菱重工引领“智”造新范式

日前&#xff0c;由深圳软件协会指导、法大大和信息侠联合出品的《制造行业合同数智化升级白皮书》&#xff08;以下简称“白皮书”&#xff09;正式发布&#xff0c;并首次提出 “电子签法律AI” 双轮驱动模型。在制造行业面临供应链协同、合规风控及全球化出海等多重挑战的当…

【学习笔记】计算机操作系统(七)—— 文件管理

第七章 文件管理 文章目录第七章 文件管理7.1 文件和文件系统7.1.1 数据项、记录和文件7.1.2 文件名和类型7.1.3 文件系统的层次结构7.1.4 文件操作7.2 文件的逻辑结构7.2.1 文件逻辑结构的类型7.2.2 顺序文件(Sequential File)7.2.3 记录寻址7.2.4 索引文件(Index File)7.2.5 …

基于PyQt5与深度学习的可视化水果识别系统(集成CNN, MobileNetV2, VGG16)

一、项目概述 大家好&#xff01;今天我将分享一个我近期完成的深度学习项目——一个功能强大的、带图形化界面&#xff08;GUI&#xff09;的水果识别系统。该系统不仅能识别静态图片中的水果&#xff0c;还集成了模型训练、评估、数据增强等功能于一体&#xff0c;为深度学习…

k8s-服务发布基础

目录 Service的定义 核心定义 Service 的类型 关键组件与机制 工作流程示例 高级特性 Service工作原理 核心工作原理 标签选择器&#xff08;Label Selector&#xff09; Endpoints 对象 网络代理与负载均衡&#xff08;kube-proxy&#xff09; userspace 模式&#…

洛谷P1514 [NOIP 2010 提高组] 引水入城

洛谷P1514 [NOIP 2010 提高组] 引水入城 洛谷题目传送门 题目背景 NOIP2010 提高组 T4 题目描述 在一个遥远的国度&#xff0c;一侧是风景秀美的湖泊&#xff0c;另一侧则是漫无边际的沙漠。该国的行政区划十分特殊&#xff0c;刚好构成一个 NNN 行 MMM 列的矩形&#xff…

【unity小技巧】国内Unity6下载安装和一些Unity6新功能使用介绍

文章目录前言一、安装1、国外下载2、国内下载二、常用的新功能变化1、官方推荐使用inputsystem进行输入控制2、修复了InputSystem命名错误导致listen被遮挡的bug3、自带去除unity启动画面logo功能4、unity官方的behavior行为树插件5、linearVelocity代替过时的velocity方法6、随…

Rust 中字符串类型区别解析

在 Rust 中&#xff0c;"hello" 和 String::from("hello") 都表示字符串&#xff0c;但它们在内存表示、所有权和可变性上有本质区别&#xff1a;1. 类型与内存表示"hello" (字符串字面量)&#xff1a;类型为 &str&#xff08;字符串切片引用…

springMVC05-异常处理器

在 SpringMVC 中&#xff0c;异常处理是一个非常重要的功能&#xff0c;它可以让你优雅地处理程序抛出的各种异常&#xff0c;向用户展示友好的提示&#xff0c;而不是显示一堆报错信息&#xff08;如 500 页面&#xff09;。一、SpringMVC的异常处理器返回的是ModelAndView&am…

安装 Elasticsearch IK 分词器

安装 Elasticsearch IK 分词器&#xff08;手动 .zip/.zip 安装&#xff09; IK 分词器&#xff08;IK Analysis&#xff09;是 Elasticsearch 最常用的中文分词插件&#xff0c;支持 细粒度分词&#xff08;ik_max_word&#xff09; 和 智能切分&#xff08;ik_smart&#xf…

数据库系统原理实验1:创建数据库、数据表及单表查询

一、实验目的1&#xff0e;掌握在SQL Server中使用对象资源管理器和SQL命令创建数据库与修改数据库的方法。2&#xff0e;掌握在SQL Server中使用对象资源管理器或者SQL命令创建数据表和修改数据表的方法&#xff08;以SQL命令为重点&#xff09;。3&#xff0e;掌握无条件查询…

【STM32】ADC模数转换基本原理(提供完整实例代码)

这篇文章是嵌入式中我通过大量资料 整合成了一份 系统完整、层次清晰的 ADC 模数转换原理解析 文档。 这里系统地梳理了 STM32F1 系列 ADC 模数转换的核心资料&#xff0c;包括&#xff1a; 1.原理 特性 2.通道配置 3.模式选择&#xff08;单次/连续/扫描&#xff09; 4.关键寄…

图神经网络 gnn 应用到道路网络拓扑结构与交通碳排放相关性。,拓扑指标量化、时空关联模型及演化机制分析

针对您提出的“道路网络拓扑结构与交通碳排放相关框架&#xff0c;以下结合研究目标、数据与方法进行系统性深化设计&#xff0c;重点强化拓扑指标量化、时空关联模型及演化机制分析&#xff1a;一、核心研究问题深化 静态关联&#xff1a;不同拓扑结构&#xff08;方格网/环射…

7.6 优先队列| dijkstra | hash | rust

lc1337pair存入&#xff0c;lambda sort后取出&#xff0c;最开始想用hash&#xff0c;写一半感觉写复杂了class Solution {public:vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {int m mat.size();int n mat[0].size();vector<pair…

最新 HarmonyOS API 20 知识库 重磅推出

最新 HarmonyOS API 20 知识库 重磅推出 前言 最近整理下 华为开发者联盟最新的 API 20的鸿蒙应用开发文档&#xff0c;这次的API 20 相比较之前的文档&#xff0c;要多了不少内容&#xff0c;目前整理后是9000千多篇&#xff0c;不容易呀。 如何使用 基于腾讯的知识库工具 …

uniapp 监听物理返回按钮

import {onShow,onHide,onLoad,onReady,onBackPress} from "dcloudio/uni-app"onBackPress((e) > {showLog("返回按钮触发")if(e.frombackbutton){//开始干活}})参数说明属性类型说明fromString触发返回行为的来源&#xff1a;backbutton——左上角导航…

多线程(2)

多线程&#xff08;2&#xff09; &#x1f534;&#x1f7e0;&#x1f7e1;&#x1f7e2;&#x1f535;&#x1f7e3;&#x1f534;&#x1f534;&#x1f7e0;&#x1f7e1;&#x1f7e2;&#x1f535;&#x1f7e3;&#x1f534;&#x1f534;&#x1f7e0;&#x1f7e1;&am…

网关助力航天喷涂:Devicenet与Modbus TCP的“跨界对话“

在航空航天领域&#xff0c;飞机、航天器的制造过程有着极高的精度与安全性要求。以飞机、航天器表面喷涂作业为例&#xff0c;不仅要进行严格的防腐蚀处理&#xff0c;而且对表面光滑度要求极高&#xff0c;这直接关系到飞行器的空气动力学性能和使用寿命。为确保作业安全与质…

从传统项目管理到敏捷DevOps:如何转向使用DevOps看板工具进行工作流管理

在DevOps实践中&#xff0c;DevOps看板工具成为了开发与运维团队之间高效协作的关键。随着企业对敏捷开发和持续交付的需求日益增长&#xff0c;DevOps看板工具通过可视化的管理方法&#xff0c;帮助团队在繁杂的任务中保持高效的工作节奏和清晰的进度跟踪。 具体而言&#xff…