提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

1.pom文件引入相关jar包

2.文件发送源码(废话不多说)

3.文件接收源码

总结



前言

通过HttpClient实现请求发送、接收文件。

1.pom文件引入相关jar包

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version>
</dependency>
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.5.13</version>
</dependency>

2.文件发送源码(废话不多说)

代码如下:

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;/*** 调用跨网文件发送接口* @author tingh**/
public class HttpSendFile {private static final Charset CHARSET_UTF8 = Charset.forName("UTF-8");/*** 调用文件发送接口* @param file* @param info* @param remote_url* @return*/public static Map<String, Object> call_sendFile(File file, String remote_url){CloseableHttpClient httpclient = HttpClients.createDefault();Map<String, Object> responseMap = new HashMap<>();try{HttpPost httpPost = new HttpPost(remote_url);//创建接口需要的参数MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();ContentType infoCType = ContentType.create("application/json", CHARSET_UTF8);ContentType fileCType = ContentType.create("application/octet-stream", CHARSET_UTF8);entityBuilder.addPart("file", new FileBody(file, fileCType));HttpEntity entity = entityBuilder.build();httpPost.setEntity(entity);//调用跨网文件发送接口HttpResponse response = httpclient.execute(httpPost);//获取响应信息HttpEntity responseEntity = response.getEntity();if(responseEntity != null){result = EntityUtils.toString(responseEntity, CHARSET_UTF8);}responseMap.put("code", response.getStatusLine().getStatusCode());responseMap.put("result", result);} catch (IOException e){e.printStackTrace();} catch (Exception e){e.printStackTrace();} finally {try {httpclient.close();} catch (Exception e){e.printStackTrace();}}return responseMap;}
}

注意注意注意!!!!

httppost请求无需加请求头addHeader、setHeader,我用postman测试会报错。

返回结果可以自己封装,我用map处理了

注意关闭请求

3.文件接收源码


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import javax.ws.rs.core.MediaType;
import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;/*** 文件接收接口** @return*/
@RestController
public class HttpReceiveFile {public HttpReceiveFile() {}@RequestMapping(value = "/receivFile", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON, consumes = MediaType.MULTIPART_FORM_DATA)public void receivFile(MultipartFile file) {System.out.println("接收文件名:" + fileName);try {if (fileName != null && !fileName.equals("")) {//写入接收文件File newFile = new File(infoObj.getString("uid"));//改成你们的参数逻辑file.transferTo(Paths.get(newFile.getPath()));System.out.println("接收文件写入成功");}} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}

没啥注意点,就是请求类型post,生成的文件用了uuid随机生成。


总结

一个简单的文件发送、接收接口。无聊记录一下,方便自己直接拿来用。如果有自己相关逻辑处理,发送文件接口添加参数,将参数写入到entityBuilder.addPart里。接收文件时,将逻辑信息json解析出来,获取想要的相关数据。

												

java实现文件发送、接收接口,亲测可行相关推荐

  1. Windows下命令行及Java+Tesseract-OCR对图像进行(字母+数字+中文)识别,亲测可行

    Windows下Java+Tesseract-OCR对图像进行字符识别,亲测可行 1. 下载tesseract-ocr.中文语言包并安装 2. 命令行对图片进行识别及效果图 3. Java调用Tess ...

  2. ThinkBook 14P 15P 笔记本结束休眠后触控板手势失效问题解决 亲测可行

    ThinkBook 14P 15P 笔记本结束休眠后触控板手势失效问题解决 亲测可行 发现这个问题以后在网上搜了很多,基本网上现有的方案无法彻底解决:比如重启.注销:我也咨询了联想官方客服,结果他们让 ...

  3. vegas pro 15解决导入的视频和音频有噪声问题,亲测可行

    vegas pro 15解决导入的视频和音频有噪声问题,亲测可行 参考文章: (1)vegas pro 15解决导入的视频和音频有噪声问题,亲测可行 (2)https://www.cnblogs.co ...

  4. python程序打包成exe可执行文件,亲测可行(pyinstaller教程)

    python程序打包成exe可执行文件,亲测可行(pyinstaller教程)(11-20190214) 文章目录: 有些程序你不想让别人看到,由此程序你想做成绿色软件普惠大众,有些..., 然而你只 ...

  5. sublime配置java编译运行环境(亲测有效)

    sublime配置java编译运行环境(亲测有效) 对Java新手而言用eclipse进行一些简单的Java程序的编译与运行其实是比较麻烦的,也是没有必要的,用VS code的话会有很多warning ...

  6. win10 安装 SqlServer2008 亲测可行

    目录 准备: 开工: 总结: 准备: 网盘链接: 链接:https://pan.baidu.com/s/11Uc2alorjsAkEj1t0dxY3g  提取码:40bq  复制这段内容后打开百度网盘 ...

  7. 可用的公开 RTSP/ RTMP 在线视频流资源地址(亲测可行)

    可用的公开 RTSP/ RTMP 在线视频流资源地址(亲测可行) 时间节点:2023/01/23 rtsp: rtsp://wowzaec2demo.streamlock.net/vod/mp4:Bi ...

  8. 亲测可行ie8与ie11共存方法支持win7x64等

    https://multibrowser.com/到这个网站上下载最新版本,然后在里面下载一个免费的ie8或者ie11就可以实现亲测可行ie8与ie11共存,我提供下载好的版本请看附件 附图:

  9. 数据库安装时需要更新以前的Visual Studio 2010实例状态失败-----亲测可行

        数据库安装时"需要更新以前的Visual Studio 2010实例"状态失败                                               ...

  10. Ubuntu18.04安装ROS最后的rosdep update不成功解决方案(亲测可行)

    Ubuntu18.04安装ROS最后的rosdep update不成功解决方案(亲测可行) 问题描述 很多人在安装ROS时会卡在最后一步rosdep update上面,虽然这一步不成功并不影响小海龟的 ...

最新文章

  1. 百度云Java三面,面试题及答案!
  2. 远程办公如何保持高效?这群开发者们是这样做的
  3. python 排名函数_一个危险的Python函数,不推荐使用
  4. 使用Python 转化成 PB 格式数据的方法
  5. matlab pca求曲率和法向量_实践课堂 已给出实例的MATLAB求解大汇总(线性规划)...
  6. CSS中的!important属性用法
  7. Initialization failed for ‘https://start.spring.io‘ Please check URL, network and proxy settings.
  8. 金融数据公司发展趋势小探
  9. Linux文本界面配置yum源,修改Linux默认语言 配置yum源
  10. Linux学习总结(58)——生产环境运维故障处理指南
  11. 大数据分析对企业运营的价值体现
  12. Android Studio报错: Alternatively, to transfer the license agreements from one workstation to another
  13. Delphi2010Excel导入数据库
  14. arcmap拓扑错误检查器不亮_ARCGIS拓扑检查步骤与修正拓扑错误技巧
  15. SetupParameter(mil)
  16. jvm之可达性分析算法
  17. PCB板载天线及PCB设计要点
  18. 黑客帝国神级影评,转至豆瓣。 — — 哲思。
  19. python爬京东延迟加载_python大规模爬取京东
  20. FL studio 20简易入门教程 -- 第四篇 -- 钢琴卷帘窗口与单轨乐器编辑界面

热门文章

  1. Html通过CSS建立简单购物网页
  2. 旗舰版ndows7bios设置,windows7旗舰版怎样设置embios/em怎样设置emU盘
  3. 【socket】C语言的Socket网络编程
  4. 个人记账管理系统的设计与实现
  5. 计算机一级二级三级缓存,挑选CPU主要看那几个功能,主频,一级,二级,三级缓存有是什么意思?...
  6. [492]selenium保存静态网页
  7. 巨杉与润和软件完成产品兼容认证
  8. 9个Linux 查看系统硬件信息命令(实例详解)
  9. 计算机视觉与图形学-神经渲染专题-NeRF-SR
  10. P4439 [COCI2017-2018#3] Aron题解