前言

使用Post请求上传图片到服务端,服务端再插入Oracle
使用Get请求查询数据库图片到服务端,服务端再返回图片

POM文件

<dependencies><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.5.12</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.7</version></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version></dependency><dependency><groupId>top.jfunc.common</groupId><artifactId>converter</artifactId><version>1.8.0</version></dependency>
</dependencies>

一、上传图片

1、代码

客户端

/*** @param urlParam 服务端接口地址* @param fileUrl  文件地址* @return* @throws Exception*/
public static String sendPost(String urlParam, String fileUrl) throws Exception {// 创建httpClient实例对象CloseableHttpClient httpClient = HttpClients.createDefault();// 创建post请求方法实例对象HttpPost httpPost = new HttpPost(urlParam);File file = new File(fileUrl);if(!file.exists()){//判断文件是否存在return "文件不存在";}FileBody bin = new FileBody(file, ContentType.create("image/png", Consts.UTF_8));//创建图片提交主体信息HttpEntity entity = MultipartEntityBuilder.create().setCharset(Charset.forName("utf-8")).addPart("file",bin).build();httpPost.setEntity(entity);HttpResponse response = null;   //发送post,并返回一个HttpResponse对象try {response = httpClient.execute(httpPost);if(response.getStatusLine().getStatusCode()==200) {//如果状态码为200,就是正常返回String result = EntityUtils.toString(response.getEntity());System.out.println(response.getStatusLine().getStatusCode());System.out.println(result);}} catch (IOException e) {e.printStackTrace();}System.out.println(response.getEntity());return "结束";
}public static void main(String[] args) throws Exception {String url1 ="http://localhost:8080/addPic";System.out.println(sendPost(url1,"C:\\Users\\37796\\Pictures\\火影\\2.jpg"));
}

服务端

/*** @author: Radish* @date: 2020-12-14 14:53*/
@Controller
public class PicController {private static final Logger LOGGER = LoggerFactory.getLogger(PicController.class);@AutowiredPicService picService;@RequestMapping("/addPic")@ResponseBodypublic Object addPic(@RequestParam("file")MultipartFile file, HttpServletRequest request) {Map<Object, Object> param = new HashMap<Object, Object>();String name = file.getOriginalFilename();InputStream stream = null;String ioStr = "";byte[] in = new byte[0];try {stream = file.getInputStream();//将流转换成Stringin = new byte[stream.available()];stream.read(in);} catch (IOException e) {e.printStackTrace();} finally {if (null != stream) {try {stream.close();} catch (IOException e) {e.printStackTrace();}}}ImageCenter imageCenter = new ImageCenter();imageCenter.setId(1);imageCenter.setPictures(in);imageCenter.setFilename(UUID.randomUUID().toString()+".jpg");picService.addPic(imageCenter);return "上传成功!";}
}
package com.founder.entity;/*** @author: Radish* @date: 2020-12-14 15:29*/
public class ImageCenter {private int id;private String filename;private byte[] pictures; //用byte[]接收图片数据public ImageCenter(){};public int getId() {return id;}public void setId(int id) {this.id = id;}public String getFilename() {return filename;}public void setFilename(String filename) {this.filename = filename;}public byte[] getPictures() {return pictures;}public void setPictures(byte[] pictures) {this.pictures = pictures;}
}

2、测试


插入成功!

二、下载图片

1、代码

客户端

public static List<ImageCenter> sendGet(String urlParam) throws HttpException, IOException {// 创建httpClient实例对象HttpClient httpClient = new HttpClient();// 设置httpClient连接主机服务器超时时间:15000毫秒httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);// 创建GET请求方法实例对象GetMethod getMethod = new GetMethod(urlParam);// 设置post请求超时时间getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);getMethod.addRequestHeader("Content-Type", "application/json");int i = httpClient.executeMethod(getMethod);System.out.println(i);List<ImageCenter> picList = null;String result = getMethod.getResponseBodyAsString();if(result != null && result.length() > 0) {picList = JSONArray.parseArray(result, ImageCenter.class);}return picList;
}public static void main(String[] args) throws Exception {String url2 ="http://localhost:8080/getPic";List<ImageCenter> imageCenters = sendGet(url2);BufferedOutputStream bos = null;FileOutputStream fos = null;File file = null;byte[] pictures;for (ImageCenter imageCenter : imageCenters) {System.out.println(imageCenter);pictures = imageCenter.getPictures();try {File dir = new File("C:\\Users\\37796\\Desktop\\pic\\"+imageCenter.getFilename());file = new File("C:\\Users\\37796\\Desktop\\pic\\"+imageCenter.getFilename());fos = new FileOutputStream(file);bos = new BufferedOutputStream(fos);bos.write(imageCenter.getPictures());}catch (Exception e) {e.printStackTrace();} finally {if (bos != null) {try {bos.close();} catch (IOException e1) {e1.printStackTrace();}}if (fos != null) {try {fos.close();} catch (IOException e1) {e1.printStackTrace();}}}}
}

服务端

@RequestMapping("/getPic")
@ResponseBody
public List<ImageCenter> getPic() {List<ImageCenter> pic = picService.getPic();return pic;
}

2、测试


下载成功!

Java使用HttpClient上传图片入库和查询数据库获取图片相关推荐

  1. java爬取验证码图片_JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取)...

    JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取) 发布时间:2018-05-18 16:41, 浏览次数:632 , 标签: JAVA HttpClien ...

  2. 转jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用

    JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...

  3. 通过movie_id来查询数据库获取电影名字和平均得分

    douban_comment_data.db中包含三个表:comment.movie.movie_chinese.三个表中的数据模块定义(DDL)如下: 1.comment CREATE TABLE ...

  4. vue从数据库获取图片地址,为什么图片地址为变量时找不到图片?

    vue展示以变量地址的文件 vue新手 刚开始学习vue的同学,可能会遇到一个问题,为什么当图片的地址为一个变量的时候,图片就找不到了呢? 接下来我就讲述一下我的解决方法,及思路. 首先,我们打开浏览 ...

  5. java 实现BufferedImage和ImageReader两种方式获取图片宽高、判断图片类型、获取图片大小工具类代码以及测试响应结果

    源码: import org.springframework.web.multipart.MultipartFile;import javax.imageio.ImageIO; import java ...

  6. java文件流插入数据库_使用Java流查询数据库

    java文件流插入数据库 在本文中,您将学习如何编写纯Java应用程序,这些应用程序能够处理现有数据库中的数据,而无需编写一行SQL(或类似的语言,例如HQL),而无需花费数小时将所有内容放在一起. ...

  7. java流写入数据库_使用Java流查询数据库

    java流写入数据库 在本文中,您将学习如何编写纯Java应用程序,这些应用程序能够使用现有数据库中的数据,而无需编写一行SQL(或类似的语言,如HQL),而无需花费数小时将所有内容放在一起. 准备好 ...

  8. 使用Java流查询数据库

    在本文中,您将学习如何编写纯Java应用程序,这些应用程序能够处理现有数据库中的数据,而无需编写单行SQL(或类似的语言,例如HQL),也无需花费数小时将所有内容放在一起. 准备好应用程序之后,您将通 ...

  9. BOS12——多对多添加方法,多对多页面需要字段问题(不多的话直接提供get方法),修改Realm中授权方法(查询数据库),缓存Java对象的方法,加载左侧菜单(ztree提供pId)...

    1.多对多添加方法 @Override public void add(Role model, String functionIds) {// 1.先将角色保存到数据库roleDao.save(mod ...

最新文章

  1. Machine Learning | (2) sklearn数据集与机器学习组成
  2. 自己开发的MarkDown在线编辑器越来越完善了,心里感到高兴。
  3. 第十六届全国大学生智能车竞赛全国总决赛报名信息汇总
  4. 复旦大学跑步爱好者协会章程(终稿)
  5. 计算机网络【某个单位的网点由4个子网组成,结构如图所示,其中主机H1、H2、H3、H4的IP地址和子网掩码如表所示。 (1)请写出路由器R1到4个子网的路由表。(2)...】
  6. 以太坊在哪里买_DeFi只是以太坊的开胃小菜,以太坊2.0才是重头戏
  7. oracle 查找 psu,Oracle如何检查当前数据库CPU和PSU补丁信息
  8. 纯css实现照片墙3D效果
  9. 使用Delphi开发linux应用
  10. Latex入门——使用vscode实时编辑latex文档
  11. linux 删除文件彻底删除文件夹,linux下彻底删除文件
  12. 启用FM模块后F-02创建会计凭证报错,消息号FI313 “在项目 1 (2/3/4)中未输入/派生出投资中心“ - FMDERIVE
  13. win系统设置定时开机
  14. EOF while reading packet
  15. c语言remainder函数,【总结】C/C++取余操作:%、fmod()、remainder()的区别和联系
  16. python话费充值_【图片】话费充值解决方案(附代码)转载【开发吧】_百度贴吧...
  17. JavaScript函数的使用以及下拉框、文本框、radio值的获取,结合一个淘宝竞价案例。。。
  18. 计算机制造技术飞速发展 使用计算机,机械设计制造及其自动化中计算机技术的应用分析...
  19. 通用分页 (基于jquery、bootstrap)
  20. EXCEL美化画图,请不要嫌弃excel画图,那是简单上手的不二之选

热门文章

  1. 海上风电将满足欧盟四分之一的电力需求
  2. 浏览器搜索功能的使用
  3. 最小生成树——北极通讯网络
  4. excel学习-roundbetween函数
  5. java实验二:类与对象
  6. 若依导出excel时实现excel下拉框
  7. android模拟器如何重启,教大家蓝叠安卓模拟器如何重启引擎
  8. css 上传图片时的框(div里画加号“+”)
  9. 通过javaMail发送邮件,可选添加多个收件人,密送,抄送,多个附件
  10. 使用新的Amazon Application Migration Service进行直接迁移