这里是修真院后端小课堂,每篇分享文从
【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】
八个方面深度解析后端知识/技能,本篇分享的是:
【如何调用第三方API实现图片上传? 】
1.背景介绍
在开发过程中,不论是做网页还是APP,基本上都会有图片上传的业务需求,最典型的就是注册账号之后需要用户上传头像或者用户验证的时候上传身份证照片。 而java中实现图片上传大概有两种形式:一种是使用jsp+servlet实现图片上传;一种是使用jsp+controller实现图片上传。 存储基本上也有两种形式,在数据库中直接存储blob类型的图片或者图片存储在服务器上并在数据库中存储箱对应的路径,绝大部分网站用后者。
2.知识剖析
API是什么?
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节
阿里云OSS
阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。可以通过调用 API,在任何应用、任何时间、任何地点上传和下载数据,也可以通过Web控制台对数据进行简单的管理。OSS适合存放任意类型的文件,适合各种网站、开发企业及开发者使用。
MULTIPARTFILE
(1)HTML中form mata方式上传的文件
(2)只存储有二进制文件和文件名
上传流程
(1)使用MultipartFile类接收上传的图片;
(2)将图片存储在服务器(阿里云OSS),返回一个图片路径;
(3)图片路径存储在用户信息中以供调用。
3.常见问题
对上传的图片做一些限制
生成缩略图?
6.扩展思考
6.扩展思考
7.参考文献
1、如何生成缩略图
在图片连接后设定参数
格式
;endpoint>/object?x-oss-process=image/action,parame_value
指定缩略的模式:
lfit:等比缩放,限制在指定w与h的矩形内的最大图片。
mfit:等比缩放,延伸出指定w与h的矩形框外的最小图片。
fill:固定宽高,将延伸出指定w与h的矩形框外的最小图片进行居中裁剪。
pad:固定宽高,缩略填充。
fixed:固定宽高,强制缩略。
例子
2、阿里云 文件上传方式
文件上传,文件流上传,网络流上传
3.防盗链作用
为了防止OSS上的数据被其他人盗链,OSS支持基于HTTP header中表头字段referer的防盗链方法。