此条记录被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文档:文档地址