Nodejs 第七十章(OSS)

OSS

OSS(Object Storage Service)是一種云存儲服務,提供了一種高度可擴展的、安全可靠的對象存儲解決方案

OSS 對象存儲以對象為基本存儲單元,每個對象都有唯一的標識符(稱為對象鍵)和數據。這些對象可以是任意類型的文件,如文檔、圖片、視頻等。OSS 提供了高可用性、高擴展性和高安全性的存儲服務,適用于各種應用場景,包括數據備份與歸檔、靜態網站托管、大規模數據處理、移動應用程序存儲等。

我們電腦平時開發的時候都是按文件和文件夾的方式存儲的

  1. OSS 是按照 Bucket 存儲的

OSS購買(阿里云演示)

https://www.aliyun.com/product/oss

  1. 買個40G 資源包 $4.98元

  1. 買完之后創建一個 Bucket

選擇公共讀,如果選擇私有的訪問圖片的時候需要攜帶私鑰

  1. 測試上傳圖片

直接訪問即可

Nodejs上傳

創建秘鑰 nodejs需要用

OSS官方文檔

npm install ali-oss
import OSS from 'ali-oss';
import path from 'node:path'
const client = new OSS({region: 'oss-cn-beijing', //區域accessKeyId: 'XXXXXXXXXXXXXXXXXXXX上圖的accessKeyId',accessKeySecret: 'XXXXXXXXXXXXXXXXX上圖的accessKeySecret',bucket: 'nodejs-oss', //存儲庫
});

上傳

//第一個參數上傳到OSS文件的名稱  
//第二個參數本地圖片的路徑
const result = await client.put('1.jpg', './1.jpg');
console.log(result)

下載

//第一個參數OSS圖片名稱
//第二個參數下載到本地的路徑
await client.get('1.png',path.join(process.cwd(),'./1.png'));

刪除

//第一個參數刪除存儲庫文件的名稱
const result = await client.delete('1.png');

第三方授權

官方文檔 簽名

import OSS from 'ali-oss';
import express from 'express'
import path from 'node:path'
import cors from 'cors'
const app = express()
app.use(cors())
const config = {region: 'oss-cn-beijing',accessKeyId: 'XXXXXXXX',accessKeySecret: 'XXXXXXXX',bucket: 'nodejs-oss',
}
const client = new OSS(config);app.get('/', async (req, res) => {const date = new Date();date.setDate(date.getDate() + 1);const policy = {expiration: date.toISOString(),//設置簽名日期conditions: [['content-length-range', 0, 1048576000], //設置文件大小限制]}const formData = await client.calculatePostSignature(policy);const { location } = await client.getBucketLocation();const host = `http://${config.bucket}.${location}.aliyuncs.com`res.json({host, //返回上傳的urlpolicy: formData.policy, //返回政策OSSAccessKeyId: formData.OSSAccessKeyId, //返回秘鑰signature: formData.Signature //返回簽名})
})app.listen(3000, () => {console.log('server is running on port 3000')
})

前端上傳

調用后端接口拿到需要上傳的參數傳遞給阿里云接口

記得設置跨域

const file = document.getElementById('file')let params = {}fetch('http://localhost:3000/').then(res => res.json()).then(res => {params = res})file.addEventListener('change', (e) => {let file = e.target.files[0]const formData = new FormData()formData.append('key', file.name)formData.append('policy', params.policy)formData.append('OSSAccessKeyId', params.OSSAccessKeyId)formData.append('success_action_status', 200)formData.append('signature', params.signature)formData.append('file', file)fetch(params.host, {method: 'POST',body: formData})
})

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12505.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12505.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12505.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【保姆級介紹下運維】

🌈個人主頁: 程序員不想敲代碼啊 🏆CSDN優質創作者,CSDN實力新星,CSDN博客專家 👍點贊?評論?收藏 🤝希望本文對您有所裨益,如有不足之處,歡迎在評論區提出指正,讓我們共…

編譯安裝Python3

1、源碼安裝 1、安裝依賴軟件包 yum -y install gcc gcc-c zlib-devel bzip2-devel openssl-devel sqlite-devel readline-devel libffi-devel # python3.7版本安裝 2、下載 curl -o python3.6.5.tgz https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz // 或者 w…

2024年小學生古詩文大會備考:吃透歷年真題和知識點(持續)

根據往年的安排,2024年小學生古詩文大會預計這個月就將啟動。該如何備考2024年小學生古詩文大會呢?根據往期的經驗,只要吃透這些真題和背后的知識點,通過上海小學生古詩文大會的初選(初賽)一點問題都沒有。…

數據庫SQL語言實戰(八)

目錄 練習題 題目一 題目二 題目三 題目四 題目五 題目六 題目七 題目八 題目九 題目十 練習題 題目一 找出年齡小于20歲且是“物理學院”的學生的學號、姓名、院系名稱,按學號排序 create or replace view test6_01 as select S.sid,S.name,S.dname fr…

Myql 數據庫采用RAID存儲帶來電池充放電問題原因以及處理方式

一. 背景 Mysql作為數據庫, 在某些特定情況下會采用RAID(冗余磁盤陣列)進行存儲. 以保證數據庫的性能以及可靠性. 1.1. RAID種類 RAID(冗余磁盤陣列,Redundant Array of Independent Disks)是一種用于數據存儲的技術…

淺析Free RTOS中Queue的應用

目錄 概述 1 認識Queue 1.1 Queue定義 1.2 FreeRTOS中的Queue 1.3 Queue狀態 1.4 Queue內容 1.5 發送和接收Message 1.5.1 發送message 1.5.2 接收Message 2 Queue的特性 2.1 數據存儲 2.2 可被多任務存取 2.3 讀Queue時阻塞 2.4 寫Queue時阻塞 3 使用Queue 3.1…

怎么把圖片上的字去掉

將圖片上的字去掉通常需要使用圖像編輯軟件或在線工具。以下是一些常用的方法和步驟: 使用Adobe Photoshop: 打開Photoshop,導入需要編輯的圖片。 選擇“橡皮擦工具”或“克隆圖章工具”。 如果使用“橡皮擦工具”,調整橡皮擦的…

YOLOv9改進策略 | 低照度圖像篇 | 2024最新改進CPA-Enhancer鏈式思考網絡(適用低照度、圖像去霧、雨天、雪天)

一、本文介紹 本文給大家帶來的2024.3月份最新改進機制,由CPA-Enhancer: Chain-of-Thought Prompted Adaptive Enhancer for Object Detection under Unknown Degradations論文提出的CPA-Enhancer鏈式思考網絡,CPA-Enhancer通過引入鏈式思考提示機制&am…

【提示學習論文】TCP:Textual-based Class-aware Prompt tuning for Visual-Language Model

TCP:Textual-based Class-aware Prompt tuning for Visual-Language Model(CVPR2024) 基于文本的類感知提示調優的VLMKgCoOp為baseline,進行改進,把 w c l i p w_{clip} wclip?進行投影,然后與Learnable prompts進行…

樹莓派|角速度和加速度傳感器

角速度傳感器和加速度傳感器是常見的慣性傳感器,常用于測量物體的旋轉和線性運動。 角速度傳感器(Gyroscope)用于測量物體繞三個軸(X、Y、Z)的旋轉速度或角速度。它可以提供關于物體在空間中的旋轉方向和角度變化的信…

時光知識付費系統,如何制定適合自己的課程?該如何做?

在線教育平臺的網課非常多,而且課程之間的相似度非常高,不同是教的老師不同。很多人在制定課程的時候,通常都是被廣告吸引的,之后發現課程不是自己想要的,并不適合自己。 想要制定適合自己的課程,首先要清楚…

計算機視覺與深度學習實戰:以Python為工具,基于特征匹配的英文印刷字符識別

注意:本文的下載教程,與以下文章的思路有相同點,也有不同點,最終目標只是讓讀者從多維度去熟練掌握本知識點。 下載教程:計算機視覺與深度學習實戰-以MATLAB和Python為工具_基于特征匹配的英文印刷字符識別_項目開發案例教程.pdf 一、引言 隨著人工智能技術的飛速發展,計…

用爬蟲解決問題

使用爬蟲解決問題是一個常見的技術手段,特別是在需要自動化獲取和處理大量網頁數據的情況下。以下是一個詳細的步驟說明,包括如何使用 Python 和常用的爬蟲庫(如 requests 和 BeautifulSoup)來構建一個簡單的爬蟲,解決…

matlab二次插值函數 interp2

在MATLAB中,interp2函數用于執行二維插值操作。該函數可以接受多種不同的插值方法,其中包括linear(線性插值)和nearest(最臨近插值)。這兩種插值方法的插值結果存在明顯的差異。 linear(線性插值…

引用存儲復制屬性

當執行 this.tableDataSim.push(this.simForm) 時,將 this.simForm 對象添加到 this.tableDataSim 數組中。如果 this.simForm 是一個對象,并且 this.tableDataSim 數組中之前的對象是通過引用方式存儲的,那么之前的對象會被改變,…

使用 Python 和機器學習預測股票漲跌幅

使用 Tushare API 獲取深圳股市歷史數據 引言 這篇文章將會演示如何使用 Tushare Pro API 獲取深圳股市的歷史交易數據,并將數據保存到CSV文件中。Tushare 是一款提供實時和歷史金融市場的數據服務,支持多種語言,具有豐富的數據源和強大的功…

PXI/PXIe規格1553B總線測試模塊

面向GJB5186測試專門開發的1553B總線適配卡,支持4Mbps和1Mbps總線速率。該產品提供2個雙冗余1553B通道、1個測試專用通道、2個線纜測試通道。新一代的TM53x板卡除了支持耦合方式可編程、總線信號幅值可編程、共模電壓注入、總線信號波形采集等功能外,又新…

Python專題:十三、日期和時間(2)

datetime 模塊 today()函數 date類型 year month day

二分法的時間復雜度是logN

對數函數: (a>0, a≠1, x>0) 當αe時,記為yln x 當α10時,記為ylg x 當α2時,記為ylog x 其中x是自變量,函數的定義域是(0,∞),…

【Flask框架】

6.Flask輕量型框架 6.1Flask簡介 python提供的框架中已經寫好了一個內置的服務器,服務器中的回應response行和頭已經寫好,我們只需要自己寫顯示在客戶端,的主體body部分。 ---------------------------------------------------------- Fla…