Java Httpclient 文件上传与接收

Java使用HttpClient上传文件 上传所用httpclient版本为4.5.1客户端:/** * 模拟表单上传文件 * postFile 上传的文件 * postUrl 请求地址 * postParam 其他表单的请求参数 */ public static Map<String,Object> uploadFileByHTTP(File postFile,St... 阅读详情

导入pom依赖

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

上传代码:

    /**
     *
     * @param filepath 文件全路径
     * @param fileName  文件名
     * @return
     * @throws IOException
     */
    @PostMapping(value = "/upfileload.do")
    public String upfileload(String filepath,String fileName) throws IOException {
        System.out.println("传入参数------》" + filepath + "----" + fileName);
        DataInputStream in = null;
        OutputStream out = null;
        HttpURLConnection conn = null;
        JSONObject resposeTxt = null;
        InputStream ins = null;
        ByteArrayOutputStream outStream = null;
        try {
//            URL url = new URL("http://192.168.3.11:8081/mes-boot-doc/test/fileupload?fileName=shafei.xls");
            URL url = new URL("http://localhost:8009/fileupload?fileName="+fileName);

            conn = (HttpURLConnection) url.openConnection();
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setUseCaches(false);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "text/html");
            conn.setRequestProperty("Cache-Control", "no-cache");
            conn.setRequestProperty("Charsert", "UTF-8");
            conn.connect();
            conn.setConnectTimeout(10000);
            out = conn.getOutputStream();

            File file = new File(filepath);
            in = new DataInputStream(new FileInputStream(file));

            int bytes = 0;
            byte[] buffer = new byte[1024];
            while ((bytes = in.read(buffer)) != -1) {
                out.write(buffer, 0, bytes);
            }
            out.flush();

            // 返回流
            if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                ins = conn.getInputStream();
                outStream = new ByteArrayOutputStream();
                byte[] data = new byte[1024];
                int count = -1;
                while ((count = ins.read(data, 0, 1024)) != -1) {
                    outStream.write(data, 0, count);
                }
                data = null;
                resposeTxt = JSONObject.parseObject(new String(outStream
                        .toByteArray(), "UTF-8"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                in.close();
            }
            if (out != null) {
                out.close();
            }
            if (ins != null) {
                ins.close();
            }
            if (outStream != null) {
                outStream.close();
            }
            if (conn != null) {
                conn.disconnect();
            }
        }
        return  "SUCESS";
    }

接收代码:

@PostMapping("/fileupload")
public String uploadFile(HttpServletRequest request,HttpServletResponse response) throws Exception{
    String fileName = request.getParameter("fileName");
    System.out.println("filename:"+fileName);
    String fileFullPath = "C:/HWKJ/FTP/" + fileName;

    InputStream input = null;
    FileOutputStream fos = null;
    try {
        input = request.getInputStream();
        File file = new File("C:/HWKJ/FTP/");
        if(!file.exists()){
            file.mkdirs();
        }
        fos = new FileOutputStream(fileFullPath);
        int size = 0;
        byte[] buffer = new byte[1024];
        while ((size = input.read(buffer,0,1024)) != -1) {
            fos.write(buffer, 0, size);
        }

        //响应信息 json字符串格式
        Map<String,Object> responseMap = new HashMap<String,Object>();
        responseMap.put("flag", true);

        //生成响应的json字符串
        String jsonResponse = JSONObject.toJSONString(responseMap);
        sendResponse(jsonResponse,response);
    } catch (IOException e) {
        //响应信息 json字符串格式
        Map<String,Object> responseMap = new HashMap<String,Object>();
        responseMap.put("flag", false);
        responseMap.put("errorMsg", e.getMessage());
        String jsonResponse = JSONObject.toJSONString(responseMap);
        sendResponse(jsonResponse,response);
    } finally{
        if(input != null){
            input.close();
        }
        if(fos != null){
            fos.close();
        }
    }

    return null;
}

/**
 * 返回响应
 *
 * @throws Exception
 */
private void sendResponse(String responseString,HttpServletResponse response) throws Exception {
    response.setContentType("application/json;charset=UTF-8");
    PrintWriter pw = null;
    try {
        pw = response.getWriter();
        pw.write(responseString);
        pw.flush();
    } finally {
        IOUtils.closeQuietly(pw);
    }
}

postman测试

Java后端HttpClient Post提交文件流 及服务端接收文件流 HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。 立即下载

相关推荐

单片机开发者的福音:3步搞定VSCode智能补全(IAR工程+Clangd实战)

本文为单片机开发者提供了一套高效解决方案,通过EIDE插件将IAR工程导入VSCode,并生成关键的compile_commands.json文件,结合Clangd配置,仅需三步即可实现精准的智能代码补全、一键跳转等现代编辑功能,大幅提升嵌入式开发效率。

coffee的博客 525

httpclient请求有file类型

httpclient请求有file类型 1、接口参数类型:File和其他普通类型 2、遇到的问题:开始接口请求一直不通过,提示没有传参,主要问题 请求头中传了错误的Content-Type没有删除** httpGet.setHeader(“Content-Type”, “application/json”); 有file类,需要使用MULTIPART_FORM_DATA builder.addBi...

zqymby的博客 2476

图像去雾常见数据集

上述数据集涵盖了室内、室外、真实和合成等多种场景,可以满足不同研究需求。在选择数据集时,建议根据具体任务的应用场景和目标选择合适的数据集,例如真实雾天图像适合模型的实际应用验证,而合成数据则适合模型的快速迭代和训练。希望本文能为从事图像去雾研究的朋友提供一些帮助!

m0_68604571的博客 6336

使用HttpClient发送post请求传输文件、接收文件

用到的jar包有 httpclient-4.5.10.jar httpmime-4.5.13.jar httpcore-4.4.12.jar 点击下载jar包 public static byte[] sendPost(String url, byte[] fileBytes) { CloseableHttpClient httpClient = HttpClients.createDefault(); //创建post方法连接实例,在post方法中传入待连接地址

学习要趁早z 4694

华为HCIA-Datacom实战:200人企业园区网从规划到部署全流程解析

本文详细解析了华为HCIA-Datacom认证实战中200人企业园区网的规划与部署全流程。从需求分析、组网架构设计到设备选型、VLAN划分及安全策略实施,全面覆盖园区网建设的关键环节,特别针对部门隔离、无线覆盖和基础安全防护等典型场景提供可落地的解决方案。

f0g1h2的博客 712

变邻域搜索(VNS)原理梳理和应用细节-附求解VRPTW问题C++代码

文章目录1、简介-introduction2、VNS的基本机制2.1 变邻域下降方法-Variable Neighborhood Descent2.2基本变邻域搜索方法-Basic Variable Neighborhood Search2.3 终止准则3、VNS的拓展和混杂算法3.1 VNS的拓展3.2 变邻域分解搜索-Variable Neighborhood Decomposition Search3.3 偏变邻域搜索-Skewed VNS3.4 并行变邻域搜索-Parallel VNS4、VNS和其

dragon Fly的博客 6826

java文件上传,实现不同服务器之间文件的传输,利用HttpClient发送,fileupload接收

java文件上传,实现不同服务器之间文件的传输,利用HttpClient发送,fileupload接收

qq_34297581的博客 5156

C51:PWM+舵机角度控制

PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是50%.脉冲宽度调制通过占空比编码模拟信号一个周期内,高电平占据时长的百分比如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控制。

qq_73379310的博客 3389

java httpclient文件上传,springmvc作为服务器端接收文件,以及上传中文件名乱码的解决方法

java httpclient文件上传,springmvc作为服务器端接收文件,以及上传中文件名乱码的解决方法

liuluamos的专栏 2048

ubuntu 18.04 + Kimera slam 安装与demo测试

环境:opencv 3.4.12,其他的都是按照文档下载的。 首先进行组件的安装 一、Kimera-VIO 安装参考文档:https://github.com/MIT-SPARK/Kimera-VIO/blob/master/docs/kimera_vio_install.md 按照文档装就好,在安装过程中碰到如下问题: 0、make 过程很卡,不要用所有的核 1、cmake过程中卡下载 ORBvoc.zip ,手动下载这个文件,解压,将里面的3个文件,放到/Kimera-VIO/vocabu.

dna葡萄糖的博客 3630

从零理解Brep:用Python玩转3D建模的边界表示法(附OpenCASCADE示例)

本文深入解析了边界表示法(Brep)在3D建模中的应用,通过Python和OpenCASCADE的实战示例,详细介绍了Brep的核心数据结构、布尔运算、网格转换及3D打印优化技巧。适合CAD设计、3D打印和计算机图形学领域的开发者学习与实践。

n4o5p6q7r的博客 428

httpclient结合httpmime实现文件上传

一般我们做文件上传,都是在页面上传到服务器。有时候,我们在做系统的时候,我们需要将文件先上传到我们自己的服务器,然后通过server-to-server的方式上传文件到另一个服务器,如云存储服务器。java中利用httpclient可以实现get,post等http请求,但是如果需要上传文件,需要结合httpmime,将文件作为二进制流加入到post请求体中,这里介绍如何通过httpclient将...

feinifi的博客 4031

29、网络支持技术:CDN、覆盖网络与无标度网络解析

本文详细解析了CDN路由方式与性能指标,探讨了覆盖网络与无标度网络的特性及其在云计算和现代网络中的应用。文章分析了CDN的关键技术与挑战,介绍了覆盖网络与小世界网络的基本原理,并深入讨论了无标度网络的构建算法、性能优化策略以及在多个领域的应用案例。最后,文章展望了未来网络技术发展趋势与无标度网络的结合潜力。

night的博客 90

HttpClient传递多文件&正常参数

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33967071的博客 852

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java servlet接收图片上传_HttpClient上传、接收图片

1、客户端:用到的jar包有:commons-codec-1.3.jarcommons-httpclient.jarcommons-logging1.1.jar代码:package com.httpclient;import java.io.File;import org.apache.commons.httpclient.HttpClient;import org.apache.commons....

weixin_31423955的博客 372

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

web端、android端的文件上传

1、web端的文件上传。 这里是利用了第三方的jar包。这里所需要的jar包我已经上传到本博客的资源里了,以下是连接 http://download.youkuaiyun.com/detail/caihongshijie6/6239041 代码如下: 1)login.jsp   &lt;%@ page contentType="text/html; charset=utf-8"%&gt; ...

weixin_33938733的博客 106

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

httpClient 工具类 post请求 发送文字json格式 加 图片(多个图片)的接口调用

有这么一个需求, 前端请求我的后端, 我的后端请求第三方的接口进行文字和图片的上传。 POM依赖: <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> &lt...

tang_jian_dong的博客 1384

HttpClient通过post上传文件和提交参数

上传: public void postFile(String imgpath, String fileUuid) throws Exception{ String response = ""; Properties pro = GetProperties.getKey("wgh.properties"); String fileurl = pro.getProperty("fileUrl

g_blue_wind的博客 6686

HttpClient:与springmvc结合跨域请求——使用PostMethod类进行请求,上传文件,携带参数

1.无参数public static PostMethod postMethod(String url) { return new PostMethod(url); } /** * 通过postMethod类进行请求 * @param post */ public static void sendByPostMethod(PostMethod post) { try ...

future_1024的博客 2555

HttpClient上传文件传入MultipartFile类型

通常我们在使用httpclient的时候,一把都是使用get或者postd的方式传输一些数据。在近期的项目中有这样的一个需求,我需要通过httpclient去调用一个写好的文件上传的接口,接口中是使用MultipartFile 来接受文件类型参数的。在这种情况下我们就开辟一个HttpClient中的高级功能了。直接上代码,封装了一个工具类: /** * 使用httpclint...

lsqingfeng的博客 2万+

java+web+多级文件上传

前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践。该博客重在实践。 一. Http协议原理简介 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,...

yjjatqihc的博客 522

httpClient上传文件

注意:要载入commons-httpclient-3.1.jar commons-codec.jar commons-logging.jar这三个包 import java.io.File; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpStatus;...

shuang1226的专栏 123

使用Part上传附件

/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package upload; import java.io.File; import java.io.IOException; import org.apache.commons.httpc

kcj991932907的专栏 1578

JAVA服务器间文件上传与参数传递

import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.en

BuFanQi的博客 2881

httpclient4学习-模拟通过流的形式向Servlet发送请求及超时的控制

import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import org.apach

kun20031029的专栏 2743
上一篇: Java 递归遍历文件夹及子文件夹中文件
下一篇: Linux下oracle数据库启动和关闭操作
Java程序之猿
博客等级 码龄9年 2599粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值