java http 上传文件_java利用httpClient实现后台文件上传请求
之前写过基于html和js的文件上传方法java 用springMVC 和HttpServletRequest 两种实现文件上传的方法和httpClient后台执行普通post请求的文章java通过httpClient从接口请求数据入库以及自动生成实体工具类,最近接到一个需求,需要用到后台去调用远程服务器的文件上传接口实现文件上传,用到了httpClient的MultipartEntityBuilder实现。
maven引入httpClient依赖
org.apache.httpcomponents
httpcore
4.4.13
org.apache.httpcomponents
httpclient
4.5.12
org.apache.httpcomponents
httpmime
4.5.12
以上依赖是笔者成文时maven最新的依赖包。
新建一个UploadFileUtil工具类:
package com.zhaohy.app.utils;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class UpLoadFileUtil {
private static Logger logger = LoggerFactory.getLogger(UpLoadFileUtil.class);
/**
* 通过httpClient上传文件
* @param fileName
* @param path
* @return 外部域名的下载url
*/
public static String UploadFileByHttpClient(String fileName,String path, String url) {
String result = "";
CloseableHttpClient httpClient = HttpClients.createDefault();
try {
HttpPost httpPost = new HttpPost(url);
//HttpMultipartMode.RFC6532参数的设定是为避免文件名为中文时乱码
MultipartEntityBuilder builder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.RFC6532);
httpPost.addHeader("header1", "111");//头部放文件上传的head可自定义
File file = new File(path+fileName); //上传文件的路径
builder.addBinaryBody("file", file, ContentType.MULTIPART_FORM_DATA, fileName);
builder.addTextBody("params1", "1");//其余参数,可自定义
builder.addTextBody("params2", "2");
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);// 执行提交
HttpEntity responseEntity = response.getEntity();//接收调用外部接口返回的内容
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
// 返回的内容都在content中
InputStream content = responseEntity.getContent();
// 定义BufferedReader输入流来读取URL的响应
BufferedReader in = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
if(!AppFrameworkUtil.isBlank(result)) {
logger.info("上传文件"+fileName+"返回参数==>"+result);
}else {
logger.error("上传文件失败:返回result为null");
}
}
}catch(Exception e) {
logger.error("上传文件失败:",e);
}finally {//处理结束后关闭httpclient的链接
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
}
上面代码中 fileName是文件名称,本地文件路径,url是远程上传接口url,通过httpPost.addHeader来自定义header参数,builder.addTextBody来自定义其他参数,相当于html中form表单中其他的参数,可解析返回来的result拿到自己想拿的信息。
java http 上传文件_java利用httpClient实现后台文件上传请求相关推荐
- java excel 导入 加校验_Java 利用POI进行excel文件导入时校验数据,并且追加错误批注...
首先拿到前端file控件上传的excel文件,到后台接收!拿到excel这就不多说了网上很多demo的,下面直接说校验单元格追加批注信息的 private void setpz(Workbook wo ...
- java struts2上传文件_java Struts2框架下实现文件上传功能
本文实例为大家分享了struts2框架实现文件上传的方法,供大家参考,具体内容如下 struts2的配置过程 (1)在项目中加入jar包 (2)web.xml中filter(过滤器)的配置 xmlns ...
- java form 上传文件_java通过表单进行文件上传的几种方法
上传文件的分类: 无论什么方式上传文件,都要用post提交 方式一: 前端:表单方式上传文件 后端: 使用上传技术是apache中的Commons-fileupload.jar commons-io. ...
- java https post get请求_JAVA利用HttpClient进行POST和GET请求(HTTPS)
目前,要为另一个项目提供接口,接口是用HTTP URL实现的,最初的想法是另一个项目用JQuery post进行请求. 但是,很可能另一个项目是部署在别的机器上,那么就存在跨域问题,而JQuery的p ...
- java实现qq空间模块_Java实现模拟QQ空间图片上传
Java实现模拟QQ空间图片上传 首先看效果: 首先编写我们的上传jsp代码,如下: pageEncoding="UTF-8"%> html PUBLIC "-// ...
- dos如何访问服务器文件,如何利用DOS命令将文件上传到服务器
在天下网吧-网吧系统-网吧天下栏目上一篇文章中,我们看到了:希望对各位网吧网管或者网吧维护,做网吧系统的各位大大有用,那么今天我们一起来看下:如何利用DOS命令将文件上传到服务器 在前面的文章中我们曾 ...
- java通知图库更新视频_Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能...
视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器. 多媒体视频处理工具FFmpe ...
- java excel 逐行读取_java利用poi读取Excel文件
java读取Excel文件,笔者认为:从结构上来看,Excel文件是由一个一个的单元格组成的,有点像细胞cell,逐行的排列.那么我们读的时候也应该逐行逐行的读,从左到右的寻找每一个cell. 直播电 ...
- java 解压文件_java实现解压zip文件,(亲测可用)!!!!!!
项目结构: Util.java内容: package com.cfets.demo; import java.io.File; import java.io.FileOutputStream; imp ...
最新文章
- C++中的接口(抽象类)
- [Bash Shell] Shell学习笔记
- Actionscript3.0动画编程中的几种特效举例
- python爬虫教程下载-Python爬虫入门教程!手把手教会你爬取网页数据
- linux PAM模块
- 列表表格以及媒体元素
- charles 手机抓包设置
- 查找发布地图的 REST URL并查询相关信息
- 核心API最佳实践——JDK日志分级
- (38)FPGA数码管驱动设计(第8天)
- 联邦快递就华为包裹被转运致歉 称有关货件正退回发货方
- C++中的日期和时间 time_t与struct tm转换
- keras + tensorflow 基本使用 —— backend
- python类 析构方法
- 大话跨度原始服务器信息怎么去除,大话西游2合服历史:独家整理 寻找你最初的服务器...
- 东芝300d硒鼓清零代码_东芝300d怎么清?
- No signature of method: build_*.android() is applicable for argument types
- 移动终端浏览器初始设置apple-mobile-web-app-capable(转)
- AE学习日记之MapControl与PageLayoutControl图层变化同步
- 9139 位艺人在 Python 面前不值一提 # Python 爬虫小课 5-9
热门文章
- 鸿蒙系统什么时候超过苹果,为何任正非说鸿蒙系统想超过苹果系统需要的时间,不会超过300年...
- vue v-if判断数组元素的值_Vue项目上线做的一些基本优化
- 无线 在linux叫什么地方,请问有知道atheros无线网卡Linux驱动官方下载地址是什么吗?...
- linux优先级队列,Python3 线程优先级队列( Queue)
- php鼠标悬停显示图片,鼠标滑过出现预览的大图提示效果
- CPU8085 8086名字的由来
- WINCE6.0 DM.EXE 激活驱动失败的原因之一
- jni c call java_Java通过-jni调用c语言
- 【转】Jenkins详细教程
- .netcore持续集成测试篇之MVC层单元测试