图片存储解决方案
学习自黑马:视频地址
开发一个图片上传服务,需要有存储的支持,那么我们的解决方案将有:
- 直接将图片保存到服务的硬盘
- 优点:开发便捷,成本低
- 缺点:扩容困难
- 使用分布式文件系统进行存储
- 优点:容易实现扩容
- 缺点:开发复杂度稍大(尤其是开发复杂的功能)
- 使用nfs做存储
- 优点:开发较为便捷
- 缺点:需要有一定的运维知识进行部署和维护
- 使用第三方的存储服务
- 优点:开发简单,拥有强大功能,免维护
- 缺点:付费
阿里云oss存储
什么是oss服务?
地址:视频
海量、安全、低成本、高可靠的云存储服务,提供99.999999999%的数据可靠性。使用RESTful API 可以在
互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本。
购买服务
使用第三方服务最大的缺点就是需要付费,下面,我们看下如何购买开通服务。
购买下行流量包
说明:OSS的上行流量是免费的,但是下行流量是需要购买的,一般我们的使用购买最低的流量以及存储,就可以
了,以目前的价格来看,是需要65元人民币。
开始使用oss
创建Bucket
使用OSS,首先需要创建Bucket,Bucket翻译成中文是水桶的意思,把存储的图片资源看做是水,想要盛水必须得有桶,就是这个意思了。
进入控制台,https://oss.console.aliyun.com/overview
创建完成后,在左侧可以看到已经创建好的Bucket:
选择Bucket后,即可看到对应的信息,如:url、消耗流量等
管理文件
可以通过在线的方式进行管理文件:
实现图片上传
1. 导入依赖
<dependency>
<groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>2.8.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.9</version>
</dependency>
2. 编写aliyun.properties配置文件
aliyun.endpoint=oss-cn-qingdao.aliyuncs.com
aliyun.accessKeyId=LTAIfC7fUsPj7Rfq
aliyun.accessKeySecret=c2Vo3q1AmivtY8lxFnfsCfkO2
c2HCk
aliyun.bucketName=itcast-haoke
aliyun.urlPrefix=http://itcast-haoke.oss-cn-
qingdao.aliyuncs.com/
accessKeyId以及accessKeySecret获取参考官方文档:
https://help.aliyun.com/knowledge_detail/48699.html
3.编写AliyunConfig
package cn.itcast.haoke.dubbo.api.config;
import com.aliyun.oss.OSSClient;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Configuration
@PropertySource("classpath:aliyun.properties")
@ConfigurationProperties(prefix = "aliyun")
@Data