📜  如何使用 node.js 和 Express 上传文件到阿里云 OSS - Javascript (1)

📅  最后修改于: 2023-12-03 14:52:00.423000             🧑  作者: Mango

如何使用 node.js 和 Express 上传文件到阿里云 OSS

简介

阿里云的对象存储服务(Object Storage Service,简称OSS)是一种海量、安全、低成本、高可靠的云存储服务。它可以存储任意格式的数据,包括图片、音视频、文本等等。本文将介绍如何使用 node.js 和 Express 上传文件到阿里云 OSS。

环境

在开始本文之前,你需要具备以下环境:

  • 一个阿里云账号;
  • 在阿里云控制台创建一个 OSS Bucket,并且拥有该 Bucket 的 AccessKeyId 和 AccessKeySecret;
  • 一个基于 node.js 的后端开发环境,同时安装 Express 和 ali-oss 模块。
步骤
Step 1

首先,我们需要在后端服务中配置 oss 模块。在 app.js 文件中,添加如下代码:

const OSS = require('ali-oss');

const ossClient = new OSS({
  accessKeyId: 'AccessKeyId',
  accessKeySecret: 'AccessKeySecret',
  bucket: 'Bucket名称',
  region: 'Bucket所在的区域',
});

app.set('ossClient', ossClient);

其中,AccessKeyIdAccessKeySecret 是在阿里云控制台上创建的 AccessKey 信息,Bucket名称 是你在创建的 OSS Bucket 的名称,Bucket所在的区域 是你的 OSS Bucket 所在的地理区域。你可以在阿里云官网查看 OSS Bucket 的地理位置。

Step 2

在前端页面中,我们需要添加一个上传文件的表单:

<form id="uploadForm" enctype="multipart/form-data">
  <input type="file" name="file">
  <input type="submit" value="上传">
</form>
Step 3

接下来,我们需要在前端页面中编写 JavaScript 代码,使用 AJAX 发送上传文件的请求:

const form = document.querySelector('#uploadForm');
form.addEventListener('submit', (event) => {
  event.preventDefault();
  const file = event.target.file.files[0];
  const formData = new FormData();
  formData.append('file', file);

  $.ajax({
    url: '/upload',
    type: 'POST',
    data: formData,
    processData: false,
    contentType: false,
    success: (data) => {
      console.log(data);
    },
    error: (err) => {
      console.error(err);
    },
  });
});

在上面的示例中,我们首先获取了用户上传的文件,然后将其封装为 FormData 对象,再通过 AJAX 发送到后端服务进行处理。

Step 4

在后端服务中,我们需要添加一个路由来处理上传请求。在 app.js 文件中,添加如下代码:

const ossClient = app.get('ossClient');

app.post('/upload', async (req, resp) => {
  try {
    const file = req.files.file;
    const result = await ossClient.put(file.name, file.path);
    resp.send(result);
  } catch (err) {
    console.error(err);
    resp.status(500).send(err.message);
  }
});

在上面的代码中,我们首先从请求中提取出上传的文件,然后调用 AliOSS 的 put 方法来上传文件到 OSS Bucket 中。

参考资料