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
英文地址,請注明出處:http://en.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…