前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端自己动手使用nodejs上传打包文件到aliyun oss

前端自己动手使用nodejs上传打包文件到aliyun oss

作者头像
前端人人
发布2019-06-05 15:58:35
7.2K0
发布2019-06-05 15:58:35
举报
文章被收录于专栏:前端人人前端人人
我们现在做的这个项目,前端文件选择放到aliyun oss上,oss 提供了各种语言的SDK。我们前端本着不麻烦后端,能自己动手,就自己动手的原则,使用nodejs来上传打包后的文件到aliyun oss。

官方提供的示列:

通过put接口将本地文件上传到 OSS:

代码语言:javascript
复制
let OSS = require('ali-oss')

let client = new OSS({
  region: '<Your region>',
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>',
  bucket: '<Your bucket name>',
});

async function put () {
  try {
    let result = await client.put('object-name', 'local-file');
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

put();

我们先来使用下官方提供的示列:

首先安装这个包

代码语言:javascript
复制
npm i -D ali-oss

然后在根目录下新建 ali-oss.js 文件,并复制上面的代码到该文件中,并填写上各种配置信息,如图所示:

这里是关键我也是试了几次才知道:

代码语言:javascript
复制
let result = await client.put('object-name', 'local-file');

object-name:你必须制定oss 文件管理的 文件名称,子目录下的要指定目录及文件名称及后缀。

local-file:就是本地文件路径。

比如改成这样:

代码语言:javascript
复制
let result = await client.put('index.html', 'dist/index.html');

然后在终端里执行:

代码语言:javascript
复制
node ali-oss.js

然后查看aliyun oss 文件管理

该文件就上传成功了。

你可能需要自己写个文件遍历,才能把你dist下所有文件擅上传上去,默认是覆盖oss里的文件。如果你想每次上传,都清空oss 文件管理,你可能还需要写一个遍历oss文件,并删除的逻辑代码。

推荐:

如果不想自己写的话,这里推荐另一个包(ali-oss-publish,详细使用说明请移步至github),也是基于ali-oss开发的。

我们安装这个包:

代码语言:javascript
复制
npm i -D ali-oss-publish

我们在根目录下新建 ali-oss-publish.js

代码如下:

代码语言:javascript
复制

const publish = require("ali-oss-publish");

publish(
  {
    id: "xxxxx",
    secret: "xxxxx",
    region: "xxxxx",
    bucket: "xxxxx",
    entry: "dist", // defaults to '.'
    // include: /bin|cli|lib|*.js$|\.md$/,
    exclude: /.DS_Store$/,
    mime: filename => {
      if (/\.md$/.test(filename)) {
        return "text/markdown";
      }

      return undefined;
    },
    meta: {
      ref: Date.now()
    },
    headers: {
      "Cache-Control": "max-age=30672000"
    },
    rules: [
      {
        test: /(index\.html|service-worker\.js)$/,
        use: {
          headers: {
            "Cache-Control": "no-cache"
          }
        }
      }
    ],
    output: ".",
    config: "", // defaults to try load config from 'ali-oss-publish.config.js' when config is not set
    retry: 1,
    concurrency: 4,
    force: true
  },
  (err, stats) => {
    if (err) {
      console.error("ali-oss-publish encountered a fatal error.");
      console.error(err);

      process.exit(1);
    }

    if (stats.hasProgress()) {
      const { type, index, current, total, message } = stats;

      console.log("[%s] [%s/%s] #%s: %s", type, current, total, index, message);
    } else {
      console.log(stats.message);
    }

    if (stats.hasWarnings()) {
      console.warn("ali-oss-publish encountered some warnings.");
      stats.warnings.forEach(x => {
        console.warn(x);
      });
    }

    if (stats.hasErrors()) {
      console.error("ali-oss-publish encountered some errors.");
      stats.errors.forEach(x => {
        console.error(x);
      });
    }
  }
);

这里主要3个地方:

  1. entry:"dist" // 你本地要上传的目录
  2. include: // 可以注释掉,主要用来正则匹配要上传哪些文件
  3. output:"."// oss 目录, 点号带包 跟目录

我们在终端执行:

代码语言:javascript
复制
node ali-oss-publish.js

这样dist目录下文件就逗上传到oss 跟目录下了

本文完!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端人人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档