首先,附上阿里云对象存储OSS官方文档地址
以下为整理的常用上传方式,基本优势劣势有个简单说明,并附上对应文档地址(OSS的文档还是比较丰富的,就是目录比较乱下,看中方案了可以直接去文档里面抄代码);
分类 | 使用方式及文档地址 | 简单说明优缺点 | 适用场景 |
前端表单直传OSS服务器 | 1.1、js客户端签名并直传 | 在客户端通过JavaScript代码完成签名,无需过多配置,即可实现直传,非常方便。但是客户端通过JavaScript把AccesssKeyID和AccessKeySecret写在代码里面有泄露的风险 | 只推荐在能完全信任的内网环境使用 |
1.2、 js获取服务端签名后直传 STS | Web端向服务端请求签名,然后直接上传,不会对服务端产生压力,而且安全可靠。但服务端无法实时了解用户上传了多少文件,上传了什么文件。 | 适用于前后端分离项目绝大部分场景;其中文件上传后的信息由前端在实际业务中提交到后端进行保存; | |
1.3、js获取 服务端签名直传并设置上传回调 | 用户上传完文件后,不会直接得到返回结果,而是先通知应用服务器,再把结果转达给用户 | 大多数情况下,用户上传文件后,应用服务器需要知道用户上传了哪些文件以及文件名;如果上传了图片,还需要知道图片的大小等,此时可以使用上传回调方案。 | |
移动应用直传服务器 | 2.1官方文档 | 移动端发送请求到服务端获取临时签名,然后直传文件到OSS | 适用于前后端分离项目绝大部分场景;其中文件上传后的信息由前端在实际业务中提交到后端进行保存; |
2.2 回调文档 | 移动应用直传回调 | 大多数情况下,用户上传文件后,应用服务器需要知道用户上传了哪些文件以及文件名;如果上传了图片,还需要知道图片的大小等,此时可以使用上传回调方案。 | |
ecs中转 | 3.1 post到自己的ecs服务器,再上传oss | 通过自己的服务来做一次中转,会消耗ecs资源,但是上传文件可本地保留备份 | 一些文件上传低频B端应用可以使用该方案 |
前面文档中以服务端java代码为主,为了方便非java服务端开发人员,这里附上对应的客户端调用SDK文档地址SDK示例 - 对象存储 OSS - 阿里云
推荐用法
无,各场景不同,适合的方式不一样;可以参考上面写到的适用场景,资料仅为参考,自己的判断力更重要,加油!
备注:前面提到的都是一些基本场景,如果涉及到CDN以及多地冗余的高端应用,可以自己再去去看看文档,在配置上会有相应差异