使用 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 (对象存储服务)学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

阿里云oss python sdk怎么上传一个目录

java怎么操作阿里云的oss

python使用阿里云oss-sdk

阿里云oss python sdk怎么上传一个目录

python使用阿里云oss-sdk

python2系列 接入阿里云oss sdk 实现上传脚本,亲测