日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java http 上传文件_java利用httpClient实现后台文件上传请求

發布時間:2023/12/10 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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实现后台文件上传请求的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。