文档章节

AliyunOSS 上传回调

那只是一股逆流
 那只是一股逆流
发布于 2016/09/27 22:38
字数 832
阅读 57
收藏 0

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

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

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

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

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

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

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

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

仓库地址:传送门

© 著作权归作者所有

共有 人打赏支持
上一篇: I/O模型与Java
下一篇: Java中的CopyOnWrite
那只是一股逆流
粉丝 9
博文 22
码字总数 26214
作品 0
南岸
后端工程师
私信 提问
MySQL存储过程中的IN,OUT,INOUT类型

MySQL存储过程中有IN,OUT,INOUT类型 ----------------------------------- ## IN IN参数只用来向过程传递信息,为默认值。 ## MySQL存储过程"in"参数:跟C语言的函数参数的值传递类似,MyS...

木子丰
2014/06/14
0
1
两台服务器用nginx判断文件能不能访问进行跳转怎么做?

用阿里云的 oss 做静态缓存 然后nginx 下 判断 oss上没有 相应的文件 就返回内网服务器上的相应地址 要怎么配置啊 aliyunoss/[用户id]/文件目录 [用户id].域名/文件目录...

要什么呢称
2015/04/21
627
0
Android, 如何让主线程确保回调函数执行完毕后再退出?

我现在遇到一个问题(Android项目),当用户点击HOME键之后,系统会调用onPause方法,然后就会close/release掉一些资源。而此时底层需要回调一些数据上来,并且我要将这些数据保存为文件,但...

Jerikc
2014/08/05
2.9K
2
有偿求OSS整合 直传回调

有偿求OSS整合 直传回调 留言

土星人
2016/08/19
250
2
【MySql】5.存储过程的使用

存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。使用存储过程需要MySQL5及以后的版本支持。 一、为什么要使用存储...

Jannie_xx
2014/05/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
10
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss
今天
17
0

中国龙-扬科
昨天
2
0
Linux系统设置全局的默认网络代理

更改全局配置文件/etc/profile all_proxy="all_proxy=socks://rahowviahva.ml:80/"ftp_proxy="ftp_proxy=http://rahowviahva.ml:80/"http_proxy="http_proxy=http://rahowviahva.ml:80/"......

临江仙卜算子
昨天
11
0
java框架学习日志-6(bean作用域和自动装配)

本章补充bean的作用域和自动装配 bean作用域 之前提到可以用scope来设置单例模式 <bean id="type" class="cn.dota2.tpye.Type" scope="singleton"></bean> 除此之外还有几种用法 singleton:......

白话
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部