java通过接口转发文件(上传下载)
java接口转发上传的文件
@RequestMapping(value = "/XXXX/fileUpload", method = RequestMethod.POST)
public String getFileUpload2(@RequestParam("file") MultipartFile file, HttpServletRequest request)
public static String hotMapPost3(String url, String jsonParams,String dddd, MultipartFile file, HttpServletRequest request) {JSONObject result = null;try {MultiValueMap<String,Object> params = new LinkedMultiValueMap<>();ByteArrayResource resource = new ByteArrayResource(file.getBytes()) {@Overridepublic String getFilename() {return file.getOriginalFilename();}};params.add("file",resource);RestTemplate restTemplate = new RestTemplate();HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.add("Content-Type", "multipart/form-data");httpHeaders.add("userLoginToken", dddd);String orgCode = request.getHeader("orgCode");String orgName = request.getHeader("orgName");httpHeaders.add("orgCode", orgCode);httpHeaders.add("orgName", orgName);HttpEntity<MultiValueMap<String,Object>> stringHttpEntity2 = new HttpEntity<>(params, httpHeaders);result = restTemplate.postForObject(url , stringHttpEntity2, JSONObject.class);} catch (Exception e) {log.info(e.toString());}if(null == result){return null;}else {return result.toJSONString();}}
java接口转发下载的文件
public static void postDownLoadStream(String uri, String jsonPara, HttpServletResponse response, Map<String, String> header) {HttpURLConnection connection = null;log.info("下载类型接口调用开始: uri = {}", uri);String result = "";long currentTimeMillisStart = System.currentTimeMillis();try {URL urlNet = new URL(uri);connection = (HttpURLConnection) urlNet.openConnection();connection.setRequestMethod("POST");connection.setDoInput(true);connection.setDoOutput(true);connection.setUseCaches(false);connection.setConnectTimeout(20000);connection.setReadTimeout(20000);connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("Connection", "Keep-Alive");connection.setRequestProperty("Content-Type", "application/json;charset=utf-8");if (header != null) {Iterator<Map.Entry<String, String>> iterator = header.entrySet().iterator();while (iterator.hasNext()) {Map.Entry<String, String> next = iterator.next();connection.setRequestProperty(next.getKey(), next.getValue());}}connection.connect();BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream(), "UTF-8"));writer.write(jsonPara);writer.close();int responseCode = connection.getResponseCode();log.info("httpResponseCode = {}", responseCode);if (responseCode == HttpURLConnection.HTTP_OK) {String contentType = connection.getContentType();String content = connection.getHeaderField("Content-Disposition");response.reset();response.setContentType(contentType);response.setHeader("Content-Disposition", content);OutputStream outputStream = response.getOutputStream();BufferedInputStream inputStream = new BufferedInputStream(connection.getInputStream());byte[] temp = new byte[1024];int lenth;while ((lenth = inputStream.read(temp)) > 0) {outputStream.write(temp, 0, lenth);}outputStream.flush();outputStream.close();} else {log.warn("http failed , httpResponseCode = {}", responseCode);throw new RuntimeException("HttpInvoker httpResponseCode " + uri + " " + responseCode);}} catch (MalformedURLException e) {log.warn("http failed , MalformedURLException ", e);throw new RuntimeException("HttpInvoker MalformedURLException " + uri, e);} catch (IOException e) {log.warn("http failed , IOException ", e);throw new RuntimeException("HttpInvoker IOException " + uri, e);} catch (Throwable e) {log.warn("http failed , Throwable ", e);throw new RuntimeException("HttpInvoker Throwable " + uri, e);} finally {if (connection != null) {connection.disconnect();}long currentTimeMillisEnd = System.currentTimeMillis();log.info("HttpInvoker post url = {} time-consuming = {}", uri, currentTimeMillisEnd - currentTimeMillisStart);log.info("HttpInvoker end post url = {} response = {}", uri, result);}
}
相关文章:
java通过接口转发文件(上传下载)
java接口转发上传的文件 RequestMapping(value "/XXXX/fileUpload", method RequestMethod.POST) public String getFileUpload2(RequestParam("file") MultipartFile file, HttpServletRequest request) public static String hotMapPost3(String ur…...
Docker-部署docker-compose以及管理服务
部署docker-compose以及管理服务 文章目录 部署docker-compose以及管理服务[TOC] 前言一、docker-compose是什么?1、介绍2、 功能 二、安装docker-compose1.yum直接安装2.二进制安装3.pip安装 三、docker-compose部署服务1.编写docker-compose.yml文件 总结 前言 D…...
Android - Monkey 测试应用出现Crash报错IllegalStateException
问题描述 平时使用Lottie动画都是正常的,没出过这个crash问题,看下的报错信息,代码中文件夹也设置了,没看出来问题。 AndroidRuntime: java.lang.IllegalStateException: You must set an images folder before loading an imag…...
Spring源码分析 事务 实现原理
文章目录 什么是事务Spring事务管理Spring事务实现原理事务管理器事务定义事务的开启事务核心方法业务代码使用事务TransactionInterceptor 什么是事务 一般所指的事务是数据库事务,是指一批不可分割的数据库操作序列,也是数据库并发控制的基本单位。其…...
ADS-B及雷达显示终端8.3
新版本功能升级主要有如下: 1、地图更新 在上一版本8.2中使用的高程地图为由SRTM经过地形晕渲后,生成地形图片,然后对图片进行贴图,一一按规定位置、大小将地形图贴至底图上,而后在底图上进行二维矢量地图的绘制,包括…...
第二章:最新版零基础学习 PYTHON 教程(第二节 - Python 输入/输出–从 Python 控制台获取输入)
目录 Python 中的控制台是什么? 接受来自控制台的输入: 1. 将输入类型转换为整数:...
linux安装配置 flume
目录 一 解压安装包 二 配置部署 (1)修改配置 (2)下载工具 (3)创建配置文件 (4)启动监听测试 (5)flume监控文件 一 解压安装包 这里提供了网盘资源 链…...
SSM - Springboot - MyBatis-Plus 全栈体系(十五)
第三章 MyBatis 二、MyBatis 基本使用 4. CRUD 强化练习 4.1 准备数据库数据 首先,我们需要准备一张名为 user 的表。该表包含字段 id(主键)、username、password。创建SQL如下: CREATE TABLE user (id INT(11) NOT NULL AUT…...
win10默认浏览器改不了怎么办,解决方法详解
win10默认浏览器改不了怎么办,解决方法详解_蓝天网络 在使用Windows 10操作系统时,你可能会遇到无法更改默认浏览器的情况。这可能是因为其他程序或设置正在干扰更改。如果你也遇到了这个问题,不要担心,本文将为你提供详细的解决…...
C语言连接MySQL并执行SQL语句(hello world)
1.新建一个控制台项目 参考【VS2022 和 VS2010 C语言控制台输出 Hello World】VS2022 和 VS2010 C语言控制台输出 Hello World_vs2022源文件在哪_西晋的no1的博客-CSDN博客 2.安装MySQL 参考【MySQL 8.0.34安装教程】MySQL 8.0.34安装教程_西晋的no1的博客-CSDN博客 3.复制MySQ…...
react实现动态递增展示数字特效
在可视化展示界面时有一种场景,就是页面在初始化的时候,有些数字展示想要从某个值开始动态递增到实际值,形成一种动画效果。例如: 写一个数字递增的组件,有两种方式:1.固定步长,代码如下&#x…...
读取.nrrd和.dcm文件格式医学图片可视化与预处理
nrrd数据格式 MITK默认会将医学图像保存为格式为NRRD的图像,在这个数据格式中包含: 1、一个单个的数据头文件:为科学可视化和医学图像处理准确地表示N维度的栅格信息。 2、既能分开又能合并的图像文件。 nrrd_options输出 {u’dimension’:…...
VS CODE中的筛选器如何打开?
最近更新了vscode1.82版本,发现在git管理界面有一个“筛选器”功能,十分好用,后来关掉了,找了好久都没有找到办法打开这个筛选器功能,今天无意中不知道按到了哪个快捷键,打开了,就是下图这个&am…...
vue 多环境文件配置(开发,测试,生产)
1.经常我们在开发时候会有不同环境,要代理的路由等等都会出现不同 配置一下三个文件打包的时候,执行三个不同的指令就会打包不同的环境 npm run build:dev npm run build:test npm run build:prodpackage.json 中配置scripts 指令 以,env.development…...
在服务器上搭建pulseaudio的运行环境,指定其运行目录、状态目录和模块目录
如果想在搭建 PulseAudio 的服务器上指定其运行目录、状态目录和模块目录,可以通过修改 PulseAudio 的配置文件来实现。一般情况下所涉及的配置文件和相关选项如下所示: 1、配置文件路径:通常情况下,PulseAudio 的配置文件位于 /…...
[Qt]QListView 重绘实例之一:背景重绘
0 环境 Windows 11Qt 5.15.2 MinGW x64 1 系列文章 简介:本系列文章,是以纯代码方式实现 Qt 控件的重构,尽量不使用 Qss 方式。 《[Qt]QListView 重绘实例之一:背景重绘》 《[Qt]QListView 重绘实例之二:列表项覆…...
国庆周《Linux学习第二课》
Linux开篇指南针环境安装(第一课)-CSDN博客 Linux详细的环境安装介绍在上面 第一 环境准备过程 安装过程...
6年前的麒麟980依旧可以再战
麒麟980,使用6年后的今天,我对它进行跑分测试。 在bench旗下的VRMark跑分中,麒麟980荣获5023分,同款跑分APP,要知道同一时期的高通骁龙855只有4937分, 打游戏,以和平精英为例,帧率3…...
JS计算任意多边形的面积
计算任意多边形的面积需要使用一些几何数学公式。具体的计算方法取决于多边形的形状和提供的顶点坐标。下面是一个通用的 JavaScript 函数,用于计算任意多边形的面积,假设你提供多边形的顶点坐标数组: function calculatePolygonArea(vertic…...
ios xcode15 navigationController?.navigationBar.isHidden = false无效
xcode 15 用 navigationController?.setNavigationBarHidden(true, animated: false)隐藏navigationBar后,再调用 navigationController?.navigationBar.isHidden false无效 解决 用 navigationController?.navigationBar.isHidden true隐藏navigationBar...
python-flask-djangol框架的减肥健身养生人士饮食营养管理系统
目录 技术选型与框架搭建核心功能模块设计数据模型设计示例(Django ORM)算法实现要点部署与扩展 项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 技术选型与框架搭建 Python Flask/Django框架均适合开发…...
如何用pose-search在5分钟内构建智能人体姿态分析系统
如何用pose-search在5分钟内构建智能人体姿态分析系统 【免费下载链接】pose-search x6ud.github.io/pose-search 项目地址: https://gitcode.com/gh_mirrors/po/pose-search 你是否曾经想过为你的应用添加实时人体姿态识别功能,但又担心技术门槛太高&#x…...
【PAT甲级真题】- Shopping in Mars (25)
题目来源 Shopping in Mars (25) 题目描述点击链接自行查看 注意点: 输出时按照区间左端点从小到大输出 思路简介 简单的滑动窗口 我做了一个小处理 因为题目实际上要求找的是大于等于目标值的区间 所以移动左指针的条件写成 l>r&&sum>m 这样我认…...
MySQL 8.0在麒麟系统安装后,别忘了这几步:改密码、开远程、设自启
MySQL 8.0在麒麟系统安装后的关键配置指南 当你成功在麒麟V10 SP3系统上安装了MySQL 8.0数据库后,真正的挑战才刚刚开始。许多初学者往往忽视了安装后的关键配置步骤,导致数据库安全性不足或功能受限。本文将带你深入了解如何正确完成这些关键配置&…...
手把手教你用Materials Studio的Forcite模块模拟水分子吸附(附云母建模技巧)
从零开始掌握Materials Studio水分子吸附模拟:Forcite模块实战指南 1. 分子模拟入门:理解水分子吸附的核心逻辑 分子模拟技术已成为材料科学领域不可或缺的研究工具,而水分子在矿物表面的吸附行为研究更是涉及能源、环境、地质等多个热点方向…...
超市货架摆放的秘密:手把手教你用Excel和Power BI做购物篮分析,零代码也能玩转关联规则
超市货架摆放的黄金法则:用Excel和Power BI解锁购物篮分析实战指南 走进任何一家现代超市,货架上的商品陈列绝非随意摆放——每一处细节都暗藏数据驱动的商业智慧。当传统经验法则遇上大数据分析,零售商们发现了一个颠覆认知的事实࿱…...
LVGL项目实战:用思源字体让嵌入式屏幕完美显示中文(Gui Guider 1.7.1+版本指南)
LVGL项目实战:用思源字体让嵌入式屏幕完美显示中文(Gui Guider 1.7.1版本指南) 在嵌入式UI开发中,中文显示一直是开发者面临的棘手问题之一。传统方案需要手动提取字模、管理字库,既耗时又容易出错。而LVGL结合Gui Gui…...
Day | 11 【苍穹外卖统计业务的实现:含详细思路分析】
🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...
OpenClaw时间管理:QwQ-32B驱动的智能日历优化
OpenClaw时间管理:QwQ-32B驱动的智能日历优化 1. 为什么需要AI助手管理日历? 去年我发现自己陷入了典型的"日历困境":每天要处理十几个会议邀约,手动协调时区差异,还要在碎片时间里塞进健身和学习计划。最…...
GLM-4-9B-Chat-1M惊艳效果:输入50万字小说,精准定位伏笔与人物关系图谱
GLM-4-9B-Chat-1M惊艳效果:输入50万字小说,精准定位伏笔与人物关系图谱 1. 百万长文处理新标杆 想象一下,你手头有一部50万字的网络小说,想要找出所有埋设的伏笔线索,理清复杂的人物关系网。传统方法可能需要花费数天…...
