使用httpclient上傳文件

由於客戶端有上傳文件的需求,服務器接收到客戶端上傳的文件後,需要將文件透傳給後臺業務系統.

以前給後臺業務系統交互時,組裝多段請求時使用的是org.apache.http.entity.mime.content.FileBody對象保存文件對象透傳,但是這樣的話,服務器需要在本地生成臨時文件,比較麻煩.
ContentBody body = new FileBody((File) value);
entity.addPart("pic", body);
這樣的話需要先生成本地文件,上傳成功後再刪除臨時文件,相當繁瑣.

今天偶然發現,可以使用org.apache.http.entity.mime.content.InputStreamBody.InputStreamBody(InputStream, String)類,直接將客戶端的文件輸入流拷貝一下就可以了.這樣就省去了在本地生成臨時文件的麻煩.
ByteArrayInputStream bis = new ByteArrayInputStream(data);
InputStreamBody isb = new InputStreamBody(bis, fileName);
entity.addPart("pic", isb);


通過以上改造,省去了在本地生成臨時文件的煩惱,並且使代碼看起來更加直觀.
這種方式適用於需要透傳文件的地方.比如 "客戶端"--"服務器"--"業務系統","客戶端"最終要將文件上傳到"業務系統",這時"服務器"就可以使用這種方法,直接透傳,省時省力.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章