如何调用第三方API实现图片上传。

这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

【如何调用第三方API实现图片上传。】

大家好,我是IT修真院郑州分院第11期的学员何爽,一枚正直纯洁善良的后端程序员,今天给大家分享一下,修真院官网java(职业)任务5,深度思考中的知识点——如何调用第三方API实现图片上传。

 

1.背景介绍

 

在开发过程中,不论是做网页还是APP,基本上都会有图片上传的业务需求,最典型的就是注册账号之后需要用户上传头像或者用户验证的时候上传身份证照片。

 

而java中实现图片上传大概有两种形式:

 

一种是使用jsp+controller实现图片上传。

一种是使用jsp+servlet实现图片上传;

 

存储基本上也有两种形式

 

在数据库中直接存储blob类型的图片或者图片存储在服务器上并在数据库中存储箱对应的路径。

 

现在主流的项目开发都是用的后者方式,这时就需要我们使用第三方API

那么什么是API?

 

API 是用于构建应用程序软件的一组子程序定义,协议和工具。一般来说,这是一套明确定义的各种软件组件之间的通信方法。

 

2.知识剖析

 

第三方对外通常会有API和SDK以便我们使用,那么什么是SDK?

 

SDK (Software Development Kit)中文是"软体开发工具组",用来帮一个 产品、平台开发应用程式的工具组,

由产品的厂商提供给开发者使用的。辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。

 

任务中使用的阿里云的对象存储OSS,讲一下什么是OSS。

 

阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。

 

可以通过调用 API,在任何应用、任何时间、任何地点上传和下载数据,也可以通过Web控制台对数据进行

简单的管理。OSS适合存放任意类型的文件,适合各种网站、开发企业及开发者使用。

 

在springmvc中,使用jsp+controller实现图片上传的基本思路是:

 

(1)使用MultipartFile类接收上传的图片;

(2)将图片存储在服务器(阿里云OSS),返回一个图片路径;

(3)图片路径存储在用户信息中以供调用。

 

3.常见问题 

 

(1) form表单提交的是MultipartFile类型的文件,而第三方api需要的是file类型的文件,如何进行转换?

 

(2).如何通过调用阿里云API完成图片的上传

4.解决方案

(1)第一种方法:

MultipartFile file = xxx; 

CommonsMultipartFile cf= (CommonsMultipartFile)file; 

DiskFileItem fi = (DiskFileItem)cf.getFileItem(); 

File f = fi.getStoreLocation();

会在项目的根目录的临时文件夹下生成一个文件。

 

第二种方法:

transferTo(File dest);

会在项目中生成一个新文件;

 

第三种方法:   

File f = (File) xxx 强转即可。前提是要配置multipartResolver,要不然会报类型转换失败的异常。

<bean id="multipartResolver"

<property name="maxUploadSize" value="104857600"/>

<property name="maxInMemorySize" value="4096"/>

</bean>

 

第四种方法:

Workbook wb = Workbook.getWorkbook(xxx .getInputStream());

转换为输入流,直接读取;

 

第五种方法:

byte[] buffer = myfile.getBytes();

先转换为字节数组。

 

(2)详见第四个模块编码实战

 

5.编码实战

 

6.扩展思考

 

集成第三方接口的技巧总结:

 

调用接口其实也差不多是这样:

发送请求(向第三方发送请求,传递参数)——收到数据(收到第三方的返回数据)——数据处理(数据解析)——返回前端——前端处理(前端展示封装数据)。

 

1)api文档阅读:主要看请求参数和返回数据,有些文档有很多demo,这些demo会帮助我们很多。

参考这个内容:http://www.pmcaff.com/discuss...

 

2)json数据解析:net.fs.json还是阿里的fastjson还是jacksondegnd

具体参考:https://www.cnblogs.com/huoer...

 

3)调用第三方使用的工具:Httpclient、urlConnection还是RestTemplate

具体内容参考:http://blog.csdn.net/lmb55/ar...

 

7.参考文献

 https://www.cnblogs.com/fengl...

https://blog.csdn.net/qq_4180...

https://blog.csdn.net/qq_4181...

 

8.更多讨论

 

Q1:提问人:张亚强:

 腾讯cos和阿里oss第三方对象存储有什么异同?

A1:回答人(何爽):

 就个人理解其两者并没有什么大的不同,个人理解两者都是一个远程内存罢了,oss可以自我添加水印,缩略图,防盗链等,但cos却不可以自我添加,需要引入第三方jar包实现。

 

Q2:提问人:张亚强

上传图片时是否可以通过字符流进行上传?

A2:回答人(何爽):

  不能,因为图片是二进制编码。

Q3:提问人:周宏浩

 拦截器怎么拦截图片?

A3:回答人(何爽):

 在from里面加入了enctype="multipart/form-data" 就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jython是一个在Java平台上运行的Python解释器,它允许开发人员使用Python语法编写代码,并利用Java的庞大类库和丰富的生态系统。在Jython中,可以使用Java第三方类库来扩展其功能,包括用于网络请求的request库。 request库是一个流行的用于发送HTTP请求的Python第三方库,它提供了一种简单而优雅的方式来处理HTTP请求和响应。在Jython中使用request库,开发人员可以使用其丰富的方法和选项来发送GET、POST、PUT、DELETE等类型的请求,并处理返回的响应。 使用request库发送请求的基本流程如下: 1. 导入request库:在代码中导入request库,使其可用于发送请求。 2. 构建请求:使用request库提供的方法,构建HTTP请求,包括URL、HTTP方法、请求头、请求体等。 3. 发送请求:使用request库的发送方法,发送构建好的请求,并获得响应。 4. 处理响应:根据返回的响应,处理响应头、响应体等信息。 使用request库的优点包括: 1. 简洁易用:request库提供了简单而直观的API,使发送HTTP请求变得容易。 2. 功能丰富:request库支持多种HTTP方法、文件上传、Session管理、Cookie支持等功能。 3. 强大的生态系统:作为一个流行的Python库,request有很多扩展包和插件,可以满足各种需求。 需要注意的是,Jython在运行Python代码时,实际上是通过调用Java类库来完成的。因此,在使用第三方类库时,需要确保该类库是与Jython兼容的,并且能够在Jython的Java环境中正确运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值