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.mzph.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…