HttpClient多檔案上傳

2021-09-20 19:03:56 字數 2435 閱讀 2368

這輩子沒辦法做太多事情,所以每一件都要做到精彩絕倫!

people can't do too many things in my life,so everything will be wonderful 

專案使用技術

springmvc + spring + mybatis

該工具類封裝了get、post、put、delete以及post上傳多個檔案等方法;包含了有無引數。日常開發,夠用了!

本文重點講解使用httpclient進行post請求多檔案上傳功能(底層是模擬表單提交)。

//注入httpclient和requestconfig(spring整合httpclient配置)

* @描述:httpcilent多上傳和多個引數

* @建立人:wyait

下午1:47:41

* @param url 請求url

* @param params 請求引數

* @param files file物件

}//設定引數

if(params != null)

}//生成 http post 實體

//設定請求引數

現有a前台系統和b服務系統;業務流程:

jsp頁面提交檔案—>a系統(傳送httpclient)—>b系統進行更新資料!

考慮的方案:

1,直接跳過a系統,jsp頁面請求b更新資料;

2,a系統進行檔案儲存後,將路徑帶到b系統進行更新操作;

以上兩種方案的問題點;

方案1,線上b服務,一般是內網服務,不對外開放;否則會有安全問題;

方案2,涉及分布式事務問題;

此處略主要功能是:a系統接收檔案,合法性校驗後,對進行判斷和壓縮處理,生成乙個臨時檔案;

對於對的判斷處理這裡就不做過多說明了。

重點說一下:

multipartfile 轉成 file物件實現(結合網上資料,總結出最佳實踐):

stringpath=」自定義」+multipartfile. getoriginalfilename();

file newfile=new file(path);

//直接寫檔案到指定路徑下

multipartfile.transferto(newfile);

主要功能是:呼叫httpclient已經封裝好的postuploadfile(ur,params,files)方法,傳送請求;

mapfiles = new hashmap();

files.put("newfile",newfile);

//傳送請求,並對請求資料進行處理,params自定義

obj 自定義=httpcilentservice.postuploadfile(url, params, files);

b系統通過multipartfile接收檔案資料,並進行更新操作,返回結果;

// 新file

filenewfile = new file(newfile);

//寫檔案到磁碟

newpic.transferto(newfile);

a系統在呼叫b系統後,無論結果ok,還是fail。都刪除臨時;

將該段**寫在finally**塊中:

boolean flag = new file(path).delete();

if(!flag)

最後,返回結果到jsp頁面

httpclient 上傳檔案

3.0版本 用multipartrequestentity方式,怎麼搞都不行。最後還是用了multipartpostmethod,才算搞定 總之,不好使啊.具體使用方式如下 2,post.addrequestheader content type multipart form data charse...

HttpClient上傳檔案

httpclient post請求 上傳多 檔案 param url 請求位址 param params 引數列表 return 響應字串 throws unsupportedencodingexception author jie date 2015 2 12 public static stri...

使用httpclient上傳檔案

由於客戶端有上傳檔案的需求,伺服器接收到客戶端上傳的檔案後,需要將檔案透傳給後台業務系統.以前給後台業務系統互動時,組裝多段請求時使用的是org.apache.http.entity.mime.content.filebody物件儲存檔案物件透傳,但是這樣的話,伺服器需要在本地生成臨時檔案,比較麻煩...