目录
关键字
后台服务
,测试客户端
,图片存储服务
,二级域名服务解析
,Bucket
,CNAME
其中
后台服务
本文使用SpringCloud 单体服务,用作接收从客户端上传的文件信息,并转发到七牛云服务存储
测试客户端
本文使用 h5+jquery 图片上传客户端 ,用于选择上传图片,并连接后台服务
图片存储服务
需要从七牛官网申请注册,并开通对应的对象存储
域名服务解析
本文使用阿里云的域名解析服务,扮演的角色是:”通过指定域名获取图片最终存储的路径。这里使用的是阿里云的服务和万网的域名。阿里云把在七牛云服务上设置的二级域名进行域名解析,同时最终七牛云服务会把解析的最终地址指向七牛云服务文件本身“。
Bucket
七牛云后台配置的对象存储空间名称
CNAME
七牛云后台配置的融合cdn的域名的别名
集成过程
七牛云服务后台配置相关
注册部分省略…注册完成后我们在个人中心就能获取到两个关键的key值在后续我们代码集成里面要使用这里请记好到时候要到这里来找对应的两个key值AccessKey 和Secret Key
新增对象存储空间(必须)
对象存储空间也就是我们文件要存储的地方,这里我们先按照公开空间来处理,公开空间和私有空间的区别主要在于获取上传的文件方式上,公开空间获取文件直接根据特定规则拼接成url就可以直接获取对应的文件,而私有空间则在获取文件只要有一步验证的过程明细参考官网文档
新增域名(必须)
首先这里新增的域名主要是用作后续我们上传图片以后要根据特定的域名及定制获取图片的真实路径
这里的添加的域名可以是基于自己已经购买的域名然后自定义的二级域名这里笔者有个域名hdlxdl.site ,为了和之前其他服务的域名冲突这里新建域名file.hdlxdl.site ,细心的小伙伴可能就有问题了我在这里随便写了一个这么样一个的域名,七牛怎么就能直接通过这个域名获取到文件并使用呢,请继续往下看
CNAME及域名解析(必须)
当我们在融合CDN里新建了自定义的域名后,在进入我们在第二步新建的对象空间,就能发现我们新建的域名,但是这个时候还不能直接使用我们要进行非常关键的一个步骤就是CNAME解析,关于CNAME的概念以及为什么要配置CNAME这里
大体的意思就是,当我们新建一个cdn加速域名的时候,默认就会生成一个CNAME域名的别名,我们就需要域名服务商对这个别名进行解析和映射。
点击具体的域名详情页可以看到起对应的CNAME信息,这里的CNAME我们将来会把他用到域名解析里面的记录值里面去。这里要给记清楚在这里可以找到他
进入阿里云服务管理后台,找到域名解析这里,进行对应的域名解析配置
这里我们看到为什么笔者要把自定的域名写成file.hdlxdl.site了,因为后面的一级域名的后缀是不能修改的,这是一个根本。所以我们按照如何这样的配置选项最终就把我们在七牛云商上的融合CDN新建的域名进行了映射,以后我们访问file.hdlxdl.site/ 其实最终都映射到了记录值也就是CNAME对应的地址上去了,这也就是为什么我们自己定的域名地址我们可以直接通过其访问到文件的具体地址的原因了
配置图片处理(非必须)
有时候我们需要把上传到七牛云的图片添加水印,或者裁剪等处理。这个时候就可以新建一些样式这里新建完成的样式,我们可以在访问图片路径的时候追加的路径后,这样七牛云就自动给我们把图片处理为样式里定义的格式或者水印样式等。这里不过多介绍具体的样式定义读者可以自己去挨个玩
图片上红色箭头指向的样式,也就是我们可以直接使用在图片地址拼接后。追加到图片路径的url后即可后续代码里我们会使用到。
代码集成
添加pom依赖
其中<version>[7.2.0, 7.2.99]</version>
这里的version指定了一个版本范围,每次更新pom.xml的时候会尝试去下载7.2.x版本中的最新版本,你可以手动指定一个固定的版本
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.2.0, 7.2.99]</version>
</dependency>
添加参数配置
application.properties 文件添加七牛关键参数配置
# 七牛密钥,配上自己申请的七牛账号对应的密钥
qiniu.AccessKey=365WTiGZnoPEj7fXFw8LXCOYvVKP8U-tfh32NqUd
qiniu.SecretKey=fhHetsZ5QT_-j2Rayh4GHlGO0nLmn9p3Q4WJLObk
# 七牛空间名
qiniu.Bucket=zhujohnle
# 外链访问路径
qiniu.cdn.prefix=file.hdlxdl.site/
qiniu.picstyle=?watermark/2/text/6K-t57uP6K--5aCC/font/5a6L5L2T/fontsize/500/fill/I0VGRUZFRg==/dissolve/100/gravity/SouthEast/dx/10/dy/10
service核心代码
@Service
public class QiniuUploadFileServiceImpl implements IQiniuUploadFileService,InitializingBean {
private static final Logger logger = LoggerFactory.getLogger(QiniuUploadFileServiceImpl.class);
@Autowired
private UploadManager uploadManager;
@Autowired
private BucketManager bucketManager;
@Autowired
private Auth auth;
@Value("${qiniu.Bucket}")
private String bucket;
@Value("${qiniu.cdn.prefix}")
private String DOMAIN;
@Value("${qiniu.picstyle}")
private String STYLE;
/**
* 定义七牛云上传的相关策略
*/
p