最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

HttpClient實現(xiàn)表單提交上傳文件

 更新時間:2022年08月14日 15:31:52   作者:小明同學(xué)12138  
這篇文章主要為大家詳細(xì)介紹了HttpClient實現(xiàn)表單提交上傳文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了HttpClient實現(xiàn)表單提交上傳文件的具體代碼,供大家參考,具體內(nèi)容如下

需求:如何利用HttpClient,發(fā)起post請求,模擬表單提交,在后端上傳文件?

上傳文件接口:

/**
? ? ?* 文件上傳測試接口
? ? ?* @return
? ? ?*/
? ? @PostMapping("/upload")
? ? public Object uploadFileTest(@RequestParam("file") MultipartFile file, @RequestParam("file_name") String file_name, @RequestParam("file_code") String file_code) {
? ? ? ? System.out.println(file_name+","+file_code);
? ? ? ? return "OK";
? ? }

啟動后,可以通過postman進(jìn)行調(diào)用,最后打印OK,表示接口可以調(diào)用通

然后就是正式編碼環(huán)節(jié)了

首先引入需要的包:

<dependency>
? ?<groupId>org.apache.httpcomponents</groupId>
? ?<artifactId>httpmime</artifactId>
? ?<version>4.5.3</version>
</dependency>

編寫main方法,直接發(fā)起調(diào)用

?public static String httpClientUploadFile(String url, File file) {
? ? ? ? CloseableHttpClient httpClient = HttpClients.createDefault();
? ? ? ? String result = "";
? ? ? ? //每個post參數(shù)之間的分隔。隨意設(shè)定,只要不會和其他的字符串重復(fù)即可。
? ? ? ? String boundary = "--------------4585696313564699";
? ? ? ? try {
? ? ? ? ? ? //文件名
? ? ? ? ? ? String fileName = file.getName();
? ? ? ? ? ? HttpPost httpPost = new HttpPost(url);
? ? ? ? ? ? //設(shè)置請求頭
? ? ? ? ? ? httpPost.setHeader("Content-Type", "multipart/form-data; boundary="+boundary);
?
? ? ? ? ? ? //HttpEntity builder
? ? ? ? ? ? MultipartEntityBuilder builder = MultipartEntityBuilder.create();
? ? ? ? ? ? //字符編碼
? ? ? ? ? ? builder.setCharset(Charset.forName("UTF-8"));
? ? ? ? ? ? //模擬瀏覽器
? ? ? ? ? ? builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
? ? ? ? ? ? builder.setContentType(ContentType.MULTIPART_FORM_DATA);
? ? ? ? ? ? //boundary
? ? ? ? ? ? builder.setBoundary(boundary);
? ? ? ? ? ? //multipart/form-data
? ? ? ? ? ? builder.addPart("file", new FileBody(file, ContentType.DEFAULT_BINARY));
? ? ? ? ? ? // binary
? ? ? ? ? ? //builder.addBinaryBody("name=\"file\"; filename=\"mysql.docx\"", new FileInputStream(file), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流
? ? ? ? ? ? //其他參數(shù)
? ? ? ? ? ? //builder.addTextBody("file_name", fileName, ContentType.create("text/plain", Consts.UTF_8));
? ? ? ? ? ? builder.addTextBody("file_name", fileName, ContentType.MULTIPART_FORM_DATA);
? ? ? ? ? ? builder.addTextBody("file_code", "111111", ContentType.MULTIPART_FORM_DATA);
? ? ? ? ? ? //HttpEntity
? ? ? ? ? ? HttpEntity entity = builder.build();
? ? ? ? ? ? httpPost.setEntity(entity);
? ? ? ? ? ? // 執(zhí)行提交
? ? ? ? ? ? HttpResponse response = httpClient.execute(httpPost);
? ? ? ? ? ? //響應(yīng)
? ? ? ? ? ? HttpEntity responseEntity = response.getEntity();
? ? ? ? ? ? if (responseEntity != null) {
? ? ? ? ? ? ? ? // 將響應(yīng)內(nèi)容轉(zhuǎn)換為字符串
? ? ? ? ? ? ? ? result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));
? ? ? ? ? ? }
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? } finally {
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? httpClient.close();
? ? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? System.out.println("result" + result);
? ? ? ? return result;
? ? }
?
? ? //main 方法
? ? public static void main(String[] args) {
? ? ? ? httpClientUploadFile("http://127.0.0.1:8080/test/tempA/upload",new File("e:/tmp/mysql.docx"));
? ? }

最后返回OK,調(diào)用成功

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot 多環(huán)境配置和啟動詳解

    SpringBoot 多環(huán)境配置和啟動詳解

    這篇文章主要為大家介紹了SpringBoot多環(huán)境配置和啟動詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • SpringBoot+Vue前后端分離實現(xiàn)審核功能的示例

    SpringBoot+Vue前后端分離實現(xiàn)審核功能的示例

    在實際開發(fā)中,審核功能是一個非常常用的功能,本文就來介紹一下使用SpringBoot+Vue前后端分離實現(xiàn)審核功能的示例,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Java實現(xiàn)動態(tài)代理

    Java實現(xiàn)動態(tài)代理

    本文給大家介紹的是java使用動態(tài)代理類實現(xiàn)動態(tài)代理的方法和示例,這里推薦給大家,有需要的小伙伴參考下吧
    2015-02-02
  • 解決Mybatis-Plus操作分頁后數(shù)據(jù)失效問題

    解決Mybatis-Plus操作分頁后數(shù)據(jù)失效問題

    這篇文章主要介紹了解決Mybatis-Plus操作分頁后數(shù)據(jù)失效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java中的fail-fast機(jī)制使用詳解

    Java中的fail-fast機(jī)制使用詳解

    fail-fast機(jī)制是Java集合中用于檢測并發(fā)修改的一種機(jī)制,當(dāng)一個線程遍歷集合時,如果集合被其他線程修改,就會拋出ConcurrentModificationException異常,解決fail-fast機(jī)制的方法包括使用普通for循環(huán)、Iterator
    2025-01-01
  • springBoot+mybatis-plus實現(xiàn)監(jiān)聽mysql數(shù)據(jù)庫的數(shù)據(jù)增刪改

    springBoot+mybatis-plus實現(xiàn)監(jiān)聽mysql數(shù)據(jù)庫的數(shù)據(jù)增刪改

    mybatis-plus技術(shù)是簡化了繁瑣的代碼操作,把增刪改查的語句都內(nèi)置了,直接調(diào)用就可以實現(xiàn)數(shù)據(jù)庫的增刪改查了,這篇文章主要給大家介紹了關(guān)于springBoot+mybatis-plus實現(xiàn)監(jiān)聽mysql數(shù)據(jù)庫數(shù)據(jù)增刪改的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • 從?JVM?中深入探究?Synchronized作用及原理

    從?JVM?中深入探究?Synchronized作用及原理

    這篇文章主要為大家介紹了從?JVM?中深入探究?Synchronized作用及原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • mybatis?實現(xiàn)字段大小寫賦值

    mybatis?實現(xiàn)字段大小寫賦值

    這篇文章主要介紹了mybatis?實現(xiàn)字段大小寫賦值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 一文詳解JavaWeb過濾器(Filter)

    一文詳解JavaWeb過濾器(Filter)

    本文主要介紹了一文詳解JavaWeb過濾器(Filter),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java 如何將表格數(shù)據(jù)導(dǎo)入word文檔中

    Java 如何將表格數(shù)據(jù)導(dǎo)入word文檔中

    這篇文章主要介紹了Java將表格數(shù)據(jù)導(dǎo)入word文檔中的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論

桦甸市| 汉寿县| 福泉市| 吴旗县| 略阳县| 南雄市| 上杭县| 山丹县| 桐庐县| 康定县| 延川县| 秦皇岛市| 来宾市| 石屏县| 治县。| 微山县| 亳州市| 大宁县| 新巴尔虎左旗| 白水县| 右玉县| 连南| 白朗县| 青阳县| 肥东县| 榆树市| 长春市| 宜良县| 枣庄市| 安宁市| 曲松县| 浠水县| 葫芦岛市| 雷波县| 剑河县| 保定市| 东海县| 长泰县| 五台县| 祁东县| 老河口市|