前言
在 Web 开发中,文件上传和文件管理是常见的需求。常见的文件存储方式有本地存储、CDN 存储和对象存储。其中,对象存储由于具有高可靠性、高可扩展性、低成本等特点,已成为越来越多企业使用的存储方式。而阿里云的 OSS(Object Storage Service)是一款稳定可靠、存储容量无限扩展的云存储服务。
本文将介绍如何使用 npm 包 tmc-egg-oss,在 Egg.js 中上传文件并保存到阿里云 OSS。
安装与配置
在使用 tmc-egg-oss 前,需要在阿里云上创建一个 OSS Bucket,并开通 OSS 服务。
- 配置 Egg.js 的 config/plugin.js 文件,添加 tmc-egg-oss 的依赖:
'@tmcjs/tmc-egg-oss': { enable: true, package: '@tmcjs/tmc-egg-oss' }
- 配置 config/config.default.js 文件,添加 tmc-egg-oss 和阿里云 OSS 的配置信息:
-- -------------------- ---- ------- ---------- - - ------- - ------------ ---------------- ---------------- -------------------- ------- ----------- --------- ------------- -------- ------------ ------- ----- -- --- ---- -- --
其中,AccessKeyId 和 AccessKeySecret 是阿里云账号的 Access Key 信息,Bucket 是要使用的 OSS Bucket 名称,Endpoint 是 OSS 服务的地址,Timeout 是超时时间。
上传文件到 OSS
- 在控制器中初始化 OSS:
-- -------------------- ---- ------- ----- ---------- - -------------------------- ----- -------------- ------- ---------- - ----- ------- - ----- --- - ------------- ----- ------ - ----- ------------------------- ----- ------ - ----- ------------ ------ -------- -------------------- - -
- 在模板中添加一个表单,允许用户上传文件:
<form action="/" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form>
下载文件
- 在控制器中获取文件 URL:
async download() { const oss = this.ctx.oss; const url = await oss.generateObjectUrl('oss 文件路径'); console.log(url); }
- 在模板中显示文件:
<img src="文件 URL" alt="文件名称">
线上部署
在线上部署时,需要将阿里云的 AccessKeyId 和 AccessKeySecret 填写到服务器的环境变量中,以避免在代码中明文存储密钥信息,增加安全风险。
总结
本文介绍了如何使用 npm 包 tmc-egg-oss,在 Egg.js 中上传和下载存储在阿里云 OSS 中的文件。通过了解这些基础知识,我们可以更好地实践 Web 开发中的文件上传和文件管理等常见需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005601081e8991b448ddf7e