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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

转 使用 HttpClient 4 进行文件上传

發(fā)布時間:2025/4/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转 使用 HttpClient 4 进行文件上传 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://www.tuicool.com/articles/Y7reYb

1. 概述

本教程我們將描述如何使用?HttpClient 4進行一次多文件上傳操作?.

我們將使用??http://echo.200please.com??作為測試服務(wù)器,因為它是面向公眾的,并且接受大多數(shù)類型的內(nèi)容.

如果你想要深入學(xué)習(xí)并了解你可以使用??HttpClient 做到的其它很棒的事情??– 那就去看看?首要的 HttpClient 教程吧???.

2. 使用??AddPart??方法

讓我們開始研究研究??MultipartEntityBuilder??對象,來向一個Http實體添加成分,它在稍后將會被通過一個POST操作上傳.

這是向一個?HttpEntity添加成分來表示表單的一般方法?.

示例 2.1. - 使用兩個文本成分和一個文件上傳一個表單

File file = new File(textFileName, ContentType.DEFAULT_BINARY); HttpPost post = new HttpPost("http://echo.200please.com"); FileBody fileBody = new FileBody(file); StringBody stringBody1 = new StringBody("Message 1", ContentType.MULTIPART_FORM_DATA); StringBody stringBody2 = new StringBody("Message 2", ContentType.MULTIPART_FORM_DATA); // MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); builder.addPart("upfile", fileBody); builder.addPart("text1", stringBody1); builder.addPart("text2", stringBody2); HttpEntity entity = builder.build(); // post.setEntity(entity); HttpResponse response = client.execute(post);

?

請注意我們也通過制定將會被服務(wù)器使用到的ContentType值來實例化File對象.

同樣還請注意??addPart??方法有兩個參數(shù),作用就像是表單的鍵值對?. 除非服務(wù)器端實際需要這些值并使用了這些參數(shù)名稱,它們就是有干系的,否則它們就會被簡單的忽略掉.

3. 使用??addBinaryBody??和??addTextBody??方法

創(chuàng)建一個multipart實體更直接的方式就是使用??addBinaryBody??和??AddTextBody?? 方法. 這些方法服務(wù)于上傳文本,文件,字符數(shù)組和??InputStream??對象. 我們用了一個簡單的例子來描述如何使用它們 .

示例 3.1. - 上傳一個文本和一個文本文件部分

HttpPost post = new HttpPost("http://echo.200please.com"); File file = new File(textFileName); String message = "This is a multipart post"; MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); builder.addBinaryBody("upfile", file, ContentType.DEFAULT_BINARY, textFileName); builder.addTextBody("text", message, ContentType.DEFAULT_BINARY); // HttpEntity entity = builder.build(); post.setEntity(entity); HttpResponse response = client.execute(post);

?

注意這里不需要??FileBody??和??StringBody??對象

同樣重要的是,大多數(shù)服務(wù)器不會檢查文本體的??ContentType??, 因此??addTextBody?方法可能會忽略掉??ContentType??值 .

??addBinaryBody 的??API 接受一個??ContentType??- 但是它也有可能從一個二進制體來創(chuàng)建實體,而對應(yīng)名稱的表單參數(shù)持有了這個文件. 如前面小節(jié)所述,如果ContentType值沒有被指定,一些服務(wù)器將不會識別這個文件.

接下來,我們將一個zip文件作為一個??InputStream 添加進來,??而圖片文件將會被作為File對象被添加進來:

示例 3.2. - 上傳一個Zip文件,一個圖片文件和一個文本?

HttpPost post = new HttpPost("http://echo.200please.com"); InputStream inputStream = new FileInputStream(zipFileName); File file = new File(imageFileName); String message = "This is a multipart post"; MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); builder.addBinaryBody("upfile", file, ContentType.DEFAULT_BINARY, imageFileName); builder.addBinaryBody ("upstream", inputStream, ContentType.create("application/zip"), zipFileName); builder.addTextBody("text", message, ContentType.TEXT_PLAIN); // HttpEntity entity = builder.build(); post.setEntity(entity); HttpResponse response = client.execute(post);

?

請注意ContentType值可以被動態(tài)創(chuàng)建,正如上面這個針對zip文件的示例中所示?.

最后,不是所有的服務(wù)器都接受??InputStream??部分. 我們在代碼的第一行實體化的服務(wù)器可以接受?.

讓我們現(xiàn)在來看看另外一個示例,??addBinaryBody直接用于一個位數(shù)組??:

示例 3.3. - 上傳一個位數(shù)組和文本

HttpPost post = new HttpPost("http://echo.200please.com"); String message = "This is a multipart post"; byte[] bytes = "binary code".getBytes(); // MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); builder.addBinaryBody("upfile", bytes, ContentType.DEFAULT_BINARY, textFileName); builder.addTextBody("text", message, ContentType.TEXT_PLAIN); // HttpEntity entity = builder.build(); post.setEntity(entity); HttpResponse response = client.execute(post);

?

留意?ContentType??- 它現(xiàn)在被指定為二進制數(shù)據(jù).

4. 總結(jié)

本文呈現(xiàn)了??MultipartEntityBuilder 作為一個靈活的對象提供了創(chuàng)建一個??multipart 表單多種API.

示例同樣也展示了如何使用HttpClient上傳一個類似于表單實體的HttpEntity?.

這些示例的所有實現(xiàn)和代碼塊在??我的github項目??中可以找到 – 這是一個基于Eclipse的項目, 因此可以很容易的導(dǎo)入并運行.

轉(zhuǎn)載于:https://www.cnblogs.com/wikiki/p/4343737.html

總結(jié)

以上是生活随笔為你收集整理的转 使用 HttpClient 4 进行文件上传的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 妺妺窝人体色www在线小说 | 农村少妇无套内谢粗又长 | 不卡久久| 国产综合福利 | 亚洲欧美在线播放 | 久久久久久久久久久久 | 中文字幕3区 | zzji欧美大片 | 亚洲国产精品免费视频 | 中国黄色录像一级片 | 性五月天 | 久久我不卡 | 看片网站在线观看 | 伊人网成人 | 欧美18aaaⅹxx| 人人干人人搞 | 内射国产内射夫妻免费频道 | 刘玥91精选国产在线观看 | 在线观看一区二区三区视频 | 国模二区 | 国产激情在线播放 | 五十路在线视频 | av老司机福利 | 天堂综合在线 | 国产精品一区二区三区四区 | 自拍偷拍日韩精品 | 秋葵视频成人 | 日本一区二区在线播放 | 91麻豆免费视频 | 成人在线观看黄色 | 亚洲精品国产91 | 亚洲天堂一级 | 污片免费观看 | 中文字幕在线视频网 | 亚洲成人黄色av | 国产精品久久久久久69 | 亚洲精品久久久久久一区二区 | 伊人自拍| 韩国一区二区三区在线观看 | 林雅儿欧洲留学恋爱日记在线 | 久久这里只有精品国产 | 中文字幕中出 | 欧美午夜精品久久久久久浪潮 | 污污视频在线播放 | 亚洲青春草 | 中文字幕网址在线 | 成人激情在线观看 | 人人99| 中文字幕永久视频 | 色婷婷在线播放 | 日韩精品在线观看一区二区三区 | 女同一区 | 一区二区在线精品 | 日韩欧美国产亚洲 | 国产又粗又猛又色又 | 国产亚洲一区二区三区四区 | 天天插天天色 | 日本一区二区三区在线观看视频 | 少妇做爰xxxⅹ性视频 | 人人爽人人 | 国产成人精品免费在线观看 | 人妻少妇被猛烈进入中文字幕 | 超碰在线超碰 | a在线看| 欧美日b片 | 91精品婷婷国产综合久久 | 欧美午夜精品理论片 | 伦一理一级一a一片 | 会喷水的亲姐姐 | 国产黄色免费 | 91视频在线网站 | yw在线观看 | 日韩美女视频网站 | 男女在线视频 | 最近中文字幕免费 | 国产91丝袜在线播放 | 欧美视频免费 | 日本一区二区三区视频免费看 | 明日叶三叶 | 肌肉猛男裸体gay网站免费 | 亚洲欧美自拍另类 | 欧美视频一区二区在线 | 黄av网| 亚洲一区二区三区免费 | 8x国产一区二区三区精品推荐 | 亚洲二三区 | 337p粉嫩日本欧洲亚洲大胆 | a天堂资源在线 | 狠狠艹 | 秋霞福利视频 | 爽爽影院免费观看 | 国产网站黄色 | 成人动漫亚洲 | 欧美成人三级精品 | 亚洲国产精品成人 | 日本老太婆做爰视频 | 澳门av在线 | 国产一卡在线 | 国产精品无码永久免费不卡 |