使用 SDK (Nodejs)操作阿里 OSS (对象存储服务)学习笔记
Posted усил
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 SDK (Nodejs)操作阿里 OSS (对象存储服务)学习笔记相关的知识,希望对你有一定的参考价值。
看这篇文章的前提是已经开通了阿里 OSS 服务
一、安装 node 环境(前题是安装 node 版本大于 8.0)
二、初始化项目
- 创建一个文件夹
- 进入到文件夹初始化 npm 环境 npm -init -y
- 安装插件 npm install ali-oss --save
- 创建文件 app.js 文件(用于操作 OSS)
三、配置 client 基本参数
let OSS = require('ali-oss');
// 配置项
let client = new OSS({
region: 'oss-cn-beijing', // 服务时的地域
accessKeyId: '您的 accessKeyId',
accessKeySecret: '您的 accessKeySecret'
});
- 获取配置 accessKeyId 和 accessKeySecret
四、 存储空间(Bucket)
// 接着上一节代码 (创建存储空间)
async function putBucket() {
try {
const options = {
/*
private: 私有(默认值)
public-read-write:公共读写
public-read:公共读
*/
storageClass: 'Standard',
acl: 'private',
dataRedundancyType: 'LRS'
}
// 填写Bucket名称。
const result = await client.putBucket('examplebucket', options);
console.log(result);
} catch (err) {
console.log(err);
}
}
- 列举存储空间相关方法
// 不传参,则列举所有的存储空间
let params ={
prefix: 'prefix' // 指定需要列举的存储空间的前缀。
marker: 'marker' // 列举指定marker之后的存储空间。(marker代表存储空间名称)
'max-keys': 20 // 限定此次列举存储空间的个数为20个。
}
async function listBuckets() {
try {
// 根据 client.region 来输出存储空间
const result = await client.listBuckets(params);
console.log(result);
} catch (err) {
console.log(err);
}
}
- 判断指定的存储空间是否存在
async function bucketisExist() {
try {
const result = await client.getBucketInfo('<Your bucket>')
console.log('bucketInfo: ', result.bucket)
} catch (error) {
// 指定的存储空间不存在。
if (error.name === 'NoSuchBucketError') {
console.log
} else {
console.log(error)
}
}
}
- 获取存储空间所在地域
// 需要在 client添加 bucket: '<Your bucket name>'
const result = await client.getBucketInfo
console.log(result.bucket.Location)
- 获取存储空间的信息
const result = await client.getBucketInfo('<Your bucket>')
// 获取存储空间所在的地域。
console.log(result.bucket.Location)
// 获取存储空间的名称。
console.log(result.bucket.Name)
// 获取存储空间的拥有者ID。
console.log(result.bucket.Owner.ID)
// 获取存储空间的拥有者名称,目前和拥有者ID一致。
console.log(result.bucket.Owner.DisplayName)
// 获取存储空间的创建时间。
console.log(result.bucket.CreationDate)
// 获取存储空间的存储类型。
console.log(result.bucket.StorageClass)
// 获取存储空间的版本控制状态。
console.log(result.bucket.Versioning)
五、操作 OSS
- 基本配置
let OSS = require('ali-oss');
// 配置项
let client = new OSS({
region: 'oss-cn-beijing', // 服务时的地域
accessKeyId: '您的 accessKeyId',
accessKeySecret: '您的 accessKeySecret'
});
- 查看在 Buckets 下的文件目录
client.useBucket('huangjiahao'); // 自己创建的 Buckets
async function list() {
try {
let result = await client.list({
'max-keys': 5
})
console.log(result.objects)
} catch (err) {
console.log(err)
}
}
- 上传文件
client.useBucket('huangjiahao');
async function put () {
try {
// 阿里oss 中的文件目录及文件命名
let alifile = `text/3.jpg`;
// 本地文件目录
let localfile = `E:\\\\pythonwork\\\\work\\\\爬虫\\\\pictures2\\\\3.jpg`;
let result = await client.put(alifile, localfile);
console.log(result);
} catch (err) {
console.log (err);
}
}
- 下载文件
async function get () {
try {
let alifile = `text/1.jpg`;
let localfile =`C:\\\\Users\\\\Lenovo\\\\Desktop\\\\新建文件夹\\\\1.jpg`
let result = await client.get(alifile,localfile);
console.log(result);
} catch (err) {
console.log (err);
}
}
- 删除文件
async function deletefile () {
try {
let alifile = `text/3.jpg`;
let result = await client.delete(alifile);
console.log(result);
} catch (err) {
console.log (err);
}
}
- 真正开发在过程中,我们更多的需求是将文件上传到服务器,读取文件时不是将文件下载下来,而是返回 URL 供用户在浏览器查看,目前我所了解到的信息时,需要自定义域名
- 然后我已经注册了一个域名,等待认证通过,等通过后,再来解决这个问题。
以上是关于使用 SDK (Nodejs)操作阿里 OSS (对象存储服务)学习笔记的主要内容,如果未能解决你的问题,请参考以下文章