vue项目中使用node将静态资源(单文件或文件夹均可)上传阿里oss

此条记录被CSDN自动改为只能VIP才能查阅,本着前人栽树,后人乘凉的大义,故经过查阅相关资料得知,可改为关注后免费查阅此文章。此举实属无奈查,阅完可取消关注

现在因为项目需求要将静态文件上传阿里云oss来减少服务器的压力和流量,研究了一两天实现了前端直传文件夹或单文件并进行访问的操作。

配置文件oss.js:


var oss = require('ali-oss');
var fs = require('fs');
var path = require('path');//解析需要遍历的文件夹
var filePath = path.resolve('需要上传的文件夹路径');


var client = oss({
  accessKeyId: '自己的ACCESSKEYI',
  accessKeySecret: '自己的ACCESSKEYSECRET',
  bucket: '自己的bucket名称',
  
  //regin和endpoint二选一  
  //填写离自己最近的   现在看到是离我最近的
  // region: 'oss-cn-qingdao', 
  endpoint: 'oss-cn-qingdao.aliyuncs.com'
});





//获取所有的bucket
async function listBuckets() {
  try {
    let result = await client.listBuckets();
    console.log(result);

  } catch (err) {
    console.log(err)
  }
}

// 查询单个存储空间
async function list() {
  try {
  
//指定使用哪个bucket   不指定即为最顶部指定的那个bucket
// client.useBucket('bucket名称');

    let result = await client.list(
  //指定可查看到bucket里面的数据的最大的数量
      'max-keys': 5
    })
    console.log(result)
  } catch (err) {
    console.log(err)
  }
}

// 单个上传文件 
async function put() {
  try { 
//参数一:在bucket里面的名称,也是访问的名称   参数二:文件在当前项目中的路径
    let result = await client.put('img', '/src/assets/image/warningBtn.png');
    console.log(result);
  } catch (err) {
    console.log(err);
  }
}

// 下载文件
async function get() {
  try 
//参数:存储时写入的名称
    let result = await client.get('img');
    console.log(result);
  } catch (err) {
    console.log(err);
  }
}


// 创建存储空间。
async function putBucket() {
  try {
    const clicent = {
      // storageClass: 'Archive', // 存储空间的默认存储类型为标准存储,即Standard。如果需要设置存储空间的存储类型为归档存储,请替换为Archive。
      acl: 'public-read', // 存储空间的默认读写权限为私有,即private。如果需要设置存储空间的读写权限为公共读,请替换为public-read。
      dataRedundancyType: 'ZRS' // 存储空间的默认数据容灾类型为本地冗余存储,即LRS。如果需要设置数据容灾类型为同城冗余存储,请替换为ZRS。
    }
    
    //名称是全网唯一的,注意尽量带前缀
    const result = await clicent.putBucket('<随意取bucket名称>');
    console.log(result);
  } catch (err) {
    console.log(err);
  }
}

  // 上传文件 
  async function put() {
    try {
    
      //根据文件路径读取文件,返回文件列表
      fs.readdir(filePath, function (err, files) {
        // 文件名称
        // console.log(files);
        if (err) {
          console.warn(err)
        } else {
          //遍历读取到的文件列表
          files.forEach(function (filename) {
            //获取当前文件的绝对路径
            var filedir = path.join(filePath, filename);
            // console.log(filedir.split('\\')[filedir.split('\\').length - 1]);
            // 上传
            let result = client.put('map/' + filedir.split('\\')[filedir.split('\\').length - 1], './src/map/' + filedir.split('\\')[filedir.split('\\').length - 1]);
            console.log(result);
          });
        }
      });

    } catch (err) {
      console.log(err);
    }
  }


///需要执行哪个方法取消注释即可
///需要执行哪个方法取消注释即可
///需要执行哪个方法取消注释即可



//查询所有bucket
 listBuckets();

//查询指定bucket内容
// list();

//上传单个文件
// put();

//上传文件夹
//putfile()

//下载bucket里指定的内容
//get();

//创建bucket
 //putBucket();        

直接运行node oss.js即可到对应的输出

最后附上阿里的oss文档:文档地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值