AliyunOSS 上传回调

最近项目需要将文件上传到云服务器上面去,市面上提供云存储的服务商有很多比如七牛云、阿里云、腾讯云等。其实七牛云挺不错的,有10G的免费存储空间,如果是自己使用完全够了~但是我们还是选择了阿里云的对象云存储,为什么呢?主要有以下几点考虑:

  • 作为国内领先的云服务提供商,稳定性以及服务体验绝对是数一数二的。比如我之前的一个经历:前段时间我需要将自己的域名与云存储提供的默认域名绑定以实现通过自己的域名来访问文件,在七牛云上面这个过程需要花费几十分钟,而在阿里云上面不需要等待,即刻就绑定成功了;
  • 考虑到以后可能会将项目部署到阿里云上面去,在阿里云可以实现内网访问速度非常快并且是免流量的;

好,选好了提供商接下来需要考虑的是上传方式。阿里云提供了多种上传方式:简单上传、表单上传、断点续传、追加上传、授权上传和上传回调。在上传方式上比七牛云多了一种方式:上传回调,这也是我们为什么选择阿里云的一个重要原因。
在上传方式上,我们选择了前端分片上传加上传回调的方式进行上传。

为什么要选择这两种上传方式?分片上传大家都明白,提供上传的稳定性。下面就重点说明一下为什么要选择上传回调。

  1. 减轻服务器上传文件是的网络压力。一般上传流程是:上传到应用服务器,然后由应用服务器上传到云服务器。完成这个流程应用服务器需要消耗两倍于文件的流量。如果文件比较大、上传操作频繁,应用服务器的网络压力可想而知。而上传回调直接将文件上传到云服务器,少了上传到应用服务器这个步骤,所有网络压力也就减少了一半。
  2. 减少代码的逻辑复杂度,提高服务器的稳定性。上面说到了当文件比较大、上传操作频繁时,会造成很大的网络压力。其实除了网络压力,系统的处理能力也是一个极大的考验。上传文件时,线程会阻塞,严重时甚至会造成系统崩溃。

来自阿里云的流程介绍图:
流程图

在阿里云官网下载的例子不是web项目,而是两个(一个上传,一个回调)已经打成jar包的项目。所以我对它们改造了一下:

  • 使用Spring,官网的示例没有使用Spring而平实的项目大多都是使用了Spring,方便日后使用;
  • 使用Maven,如官网示例一样;
  • 整合了获取临时密钥和上传回调,官网的示例为单独的两个项目。

仓库地址:传送门