返回

OSS 前端直传攻略:新手必读,让你秒懂!

前端

引言

对象存储 OSS 是阿里云提供的海量、安全、低成本、高可靠的云存储服务。它的前端直传功能,可以让开发者直接在前端完成文件上传,无需经过后端中转,极大地简化了开发流程。本文将为你详细讲解 OSS 前端直传的原理、配置和注意事项,让你彻底掌握这一便捷高效的文件上传方式。

一、OSS 前端直传原理

OSS 前端直传的原理很简单:

  1. 前端通过 HTML 表单或 JS SDK 向 OSS 服务器发送上传请求。
  2. OSS 服务器验证请求的合法性,并返回一个授权凭证。
  3. 前端使用授权凭证直接向 OSS 服务器上传文件。

二、前后端准备工作

1. 前端

  • 安装 OSS JavaScript SDK。
  • 获得 OSS 访问密钥(Access Key ID 和 Access Key Secret)。

2. 后端

  • 创建 OSS Bucket 并配置 CORS 规则(具体方法见后文)。
  • 生成上传凭证并返回给前端。

三、CORS 配置

CORS(跨域资源共享)是浏览器的一种安全机制,它限制了不同域之间的资源访问。OSS 前端直传需要跨域访问 OSS 服务器,因此需要配置 CORS 规则。

配置方法如下:

  1. 登录阿里云控制台,进入 OSS 管理界面。
  2. 选择要配置的 Bucket。
  3. 在「基本设置」标签页,点击「跨域设置」。
  4. 配置允许跨域访问的源域名、请求方法、请求头和响应头。

四、上传成功回调

上传成功回调是一种机制,可以让开发者在文件上传成功后执行自定义操作。OSS 前端直传支持通过回调 URL 触发自定义回调函数。

配置方法如下:

  1. 在 OSS 管理界面中,为 Bucket 配置回调规则。
  2. 设置回调 URL 为你自定义的函数 URL。

五、示例代码

1. 前端(JS)

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

const client = new OSS({
  region: 'your-region',
  accessKeyId: 'your-access-key-id',
  accessKeySecret: 'your-access-key-secret',
  bucket: 'your-bucket-name'
});

const uploadButton = document.getElementById('upload-button');
uploadButton.addEventListener('click', () => {
  const file = document.getElementById('file-input').files[0];
  client.put(file.name, file)
    .then((res) => {
      console.log(`上传成功:${res.url}`);
    })
    .catch((err) => {
      console.log(`上传失败:${err}`);
    });
});

2. 后端(Node.js)

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

const client = new OSS({
  region: 'your-region',
  accessKeyId: 'your-access-key-id',
  accessKeySecret: 'your-access-key-secret'
});

const generateUploadToken = async (bucketName, fileName) => {
  const policy = await client.generatePostPolicy(bucketName, fileName, {
    expireTime: 60
  });
  return {
    accessKeyId: client.accessKeyId,
    accessKeySecret: client.accessKeySecret,
    bucketName: bucketName,
    dir: fileName,
    expire: policy.expire,
    host: client.host,
    signature: policy.signature,
    policy: policy.encodedPolicy
  };
};

总结

OSS 前端直传是一个高效便捷的文件上传方式,它可以让开发者直接在前端完成文件上传,无需经过后端中转。通过本文的讲解,相信你已经掌握了 OSS 前端直传的原理、配置和注意事项。希望你能够运用这些知识,轻松实现文件上传功能,让你的开发更加高效!