首页 > 其他分享 >http实现form表单带CSV附件上传,数据不落盘实现方式

http实现form表单带CSV附件上传,数据不落盘实现方式

时间:2024-08-21 11:26:57浏览次数:14  
标签:map http String form builder 不落盘 put new response

以往的印象里面,实现附件上传需要有附件在磁盘里面存在(可能是见识浅薄),想着怎么去优化一下,避免落盘,就引入了这种方式,实现很容易,只是没有实践过,实践导致认知限制

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

public static void main(String[] args) {
  
        String url = "http://IP:port/api/wechat/email";
        Map<String, String> map = new HashMap<>();
        map.put("mail", "[email protected]");
        map.put("content", "请关注附件内容");
        map.put("isHtml", "true");
        map.put("title", "bian.yanmingtest");
        uploadFileExcel(url, map);

    }

public static String uploadFileExcel(String url, Map<String, String> params) {
        CloseableHttpClient client = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(url);
        String resultString = "";
        CloseableHttpResponse response = null;
        try {
            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            if (params != null) {
                for (String key : params.keySet()) {
                    builder.addPart(key,
                            new StringBody(params.get(key), ContentType.create("text/plain", Consts.UTF_8)));
                }
            }
        
            String fileStr = "姓名,性别 \nbym,0\n test,1";
            byte[] fileBytes = fileStr.getBytes();
//            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(fileBytes);
            builder.addPart("mfile",new ByteArrayBody(fileBytes,"test.csv"));
//            builder.addPart("mfile", new InputStreamBody(byteArrayInputStream, "test.csv"));

            HttpEntity reqEntity = builder.build();
            httpPost.setEntity(reqEntity);

       
            response = client.execute(httpPost, HttpClientContext.create());
            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
            System.out.println(resultString);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (response != null) {
                    response.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return resultString;
    }

http这块的经验总结
https://www.cnblogs.com/bingyimeiling/p/11820583.html

标签:map,http,String,form,builder,不落盘,put,new,response
From: https://www.cnblogs.com/hbym/p/18371262

相关文章

  • TCP,UDP,Socket,Http网络编程面试题 47道
    1.什么是网络编程        1.网络编程的本质是多台计算机之间的数据交换。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给其他设备,然后接受另外一个设备反馈的数据。现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另......
  • ArkTS---http数据请求
    前言:    要使用http请求,需在module.json5文件中添加网络管理权限"module":{"requestPermissions":[{"name":"ohos.permission.INTERNET"}]}一、使用步骤    1、导入http模块        HTTP数据请求功能主要由http模块......
  • 小学智慧教育平台(网址:https://basic.smartedu.cn
    信息科技教学指南及配套课件,可在国家中小学智慧教育平台免费使用  导读:日前,教育部发布关于印发《2024年义务教育国家课程教学用书目录(根据2022年版课程标准修订)》的通知,根据2022年版义务教育课程标准修订的教材将于2024年秋季学期陆续投入使用。 注:以下附文件全文及......
  • PHP8.1新增的异步HTTP客户端
    php8.1新增的异步http客户端随着互联网的快速发展,各种Web应用程序的性能也变得越来越重要。为了提供更好的用户体验,开发人员需要使用高效的工具和技术来处理各种网络请求。幸运的是,PHP8.1引入了一个全新的功能,即异步HTTP客户端,它允许我们以非阻塞的方式执行HTTP请求,从而提高应用......
  • 界面控件DevExpress WinForms中文教程:Data Grid(数据网格)简介(二)
    DevExpressWinFormsDataGrid是一个高性能的UI组件,由DirectX渲染引擎提供支持。数据网格(GridControl)提供了一个灵活的基于视图的体系结构,包括许多数据塑造和UI自定义特性,数据网格可以显示和编辑来自任何大小和复杂数据源的数据。P.S:DevExpressWinForms拥有180+组件和UI库,能......
  • android开发将charles证书安装到安卓系统根目录实现https抓包
    android开发将charles证书安装到安卓系统根目录实现https抓包1.安装charles,然后先将charles证书到电脑端下载地址:https://www.charlesproxy.com/安装证书到电脑端先:点击Help->SSLProxying->InstallCharlesRootCertificate->安装证书...->本地计算机->下一步......
  • BT5 2011.3.漏洞发现.2(http smb)
    第三部分HTTP工具 1.BurpSuite(1)BurpSuiteisacombinationofpowerfulwebapplicationsecuritytools.Thesetoolsdemonstratethereal-worldcapabilitiesofanattackerpenetratingthewebapplications.Itcanscan,analyze,andexploitthewebapplications......
  • ViT 原理解析 (Transformers for Image Recognition at Scale)
    ViT原理解析(TransformersforImageRecognitionatScale)原创 小白 小白研究室 2024年06月10日21:09 北京如何将transformer应用到图像领域Transformer模型最开始是用于自然语言处理(NLP)领域的,NLP主要处理的是文本、句子、段落等,即序列数据。视觉领域处理的......
  • C. Perform Operations to Maximize Score
    原题链接题解着重点:分类讨论+二分中位数首先,由于要求中位数,我们先将数组进行排序;接着我们取遍所有的ai及其对应中位数。此时,分歧产生,我们有k次增值的机会,是加到ai(不会改变中位数)上还是增值后改变中位数(此时中位数可能改变)?显然,我们要分类讨论情况一:我们加到选取的ai上,显然......
  • Python字符串格式化:%和.format
    Python中字符串格式化主要有两种方式:使用%操作符(也称为旧式或C风格的字符串格式化)和使用.format()方法(也称为新式字符串格式化)。每种方法都有其用途和优缺点,但在现代Python代码中,推荐使用.format()方法或更现代的f-strings(Python3.6+)。不过,了解%和.format()方法......