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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java http 上传文件_java利用httpClient实现后台文件上传请求 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

之前寫過基于html和js的文件上傳方法java 用springMVC 和HttpServletRequest 兩種實現(xiàn)文件上傳的方法和httpClient后臺執(zhí)行普通post請求的文章java通過httpClient從接口請求數(shù)據(jù)入庫以及自動生成實體工具類,最近接到一個需求,需要用到后臺去調(diào)用遠(yuǎn)程服務(wù)器的文件上傳接口實現(xiàn)文件上傳,用到了httpClient的MultipartEntityBuilder實現(xiàn)。

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參數(shù)的設(shè)定是為避免文件名為中文時亂碼

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");//其余參數(shù),可自定義

builder.addTextBody("params2", "2");

HttpEntity entity = builder.build();

httpPost.setEntity(entity);

HttpResponse response = httpClient.execute(httpPost);// 執(zhí)行提交

HttpEntity responseEntity = response.getEntity();//接收調(diào)用外部接口返回的內(nèi)容

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){

// 返回的內(nèi)容都在content中

InputStream content = responseEntity.getContent();

// 定義BufferedReader輸入流來讀取URL的響應(yīng)

BufferedReader in = new BufferedReader(new InputStreamReader(content));

String line;

while ((line = in.readLine()) != null) {

result += line;

}

if(!AppFrameworkUtil.isBlank(result)) {

logger.info("上傳文件"+fileName+"返回參數(shù)==>"+result);

}else {

logger.error("上傳文件失敗:返回result為null");

}

}

}catch(Exception e) {

logger.error("上傳文件失敗:",e);

}finally {//處理結(jié)束后關(guān)閉httpclient的鏈接

try {

httpClient.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return result;

}

}

上面代碼中 fileName是文件名稱,本地文件路徑,url是遠(yuǎn)程上傳接口url,通過httpPost.addHeader來自定義header參數(shù),builder.addTextBody來自定義其他參數(shù),相當(dāng)于html中form表單中其他的參數(shù),可解析返回來的result拿到自己想拿的信息。

總結(jié)

以上是生活随笔為你收集整理的java http 上传文件_java利用httpClient实现后台文件上传请求的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。