12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- // const client = require("ali-oss");
- const path = require("path");
- const fs = require("fs");
- const oss = require("ali-oss");
- (async function Init() {
- const localDir = "dist/";
- const dirPath = path.resolve(__dirname, "./" + localDir);
- const baseOssDir = "topic/";
- const client = new oss({
- region: "oss-cn-chengdu",
- // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
- accessKeyId: "LTAI4GEBqfF1GX4VwsYU2Wpg",
- accessKeySecret: "rVIv0E1lRfXOCrAmkFTZnfgWiuv4ea",
- bucket: "smcic-index",
- });
- /**
- * 获取localDir下的所有文件路径
- * @param {string} pathDir
- */
- async function getFiles(pathDir) {
- const dirList = fs.readdirSync(pathDir) || [];
- for (let i = 0; i < dirList.length; i++) {
- const P = [pathDir, dirList[i]];
- const stat = fs.lstatSync(P.join("\\"));
- if (!stat.isDirectory()) {
- await upFileOSS(P);
- } else getFiles(P.join("\\"));
- }
- }
- /**
- * 获得上传目录下的所有文件路径
- * @param {string} in_dirPath
- */
- async function delDir(in_dirPath) {
- let list = await client.list({
- prefix: in_dirPath,
- });
- (list.objects || []).splice(0, 1);
- // 删除文件
- await Promise.all(
- list.objects.map(async v => {
- try {
- await client.delete(v.name);
- } catch (error) {
- error.failObjectName = v.name;
- return error;
- }
- })
- );
- // console.log("文件清除完成");
- }
- /**
- * 上传文件到oss
- * @param {string} filePath
- */
- async function upFileOSS(filePath) {
- try {
- // 填写OSS文件完整路径和本地文件的完整路径。OSS文件完整路径中不能包含Bucket名称。
- // 如果本地文件的完整路径中未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
- let dir = filePath[0].split("\\");
- dir = dir.reverse()[0] + "/";
- if(dir === localDir) dir = "";
- console.log(baseOssDir + dir + filePath[1],filePath.join("\\"))
- await client.put(
- baseOssDir + dir + filePath[1],
- path.normalize(filePath.join("\\"))
- // 自定义headers
- //,{headers}
- );
- } catch (e) {
- console.error("未成功上传:", filePath.join("\\"));
- console.log("err--->", e);
- }
- }
-
- await delDir(baseOssDir);
- await getFiles(dirPath);
- })();
|