這輩子沒辦法做太多事情,所以每一件都要做到精彩絕倫!
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物件儲存檔案物件透傳,但是這樣的話,伺服器需要在本地生成臨時檔案,比較麻煩...