歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java使用HttpURLConnection上傳文件

從普通Web頁面上傳文件很簡單,只需要在form標簽叫上enctype="multipart/form-data"即可,剩余工作便都交給浏覽器去完成數據收集並發送Http請求。但是如果沒有頁面的話要怎麼上傳文件呢?

由於脫離了浏覽器的環境,我們就要自己去完成數據的收集並發送請求,所以就很麻煩了。

Android使用HttpURLConnection下載圖片  http://www.linuxidc.com/Linux/2014-05/101854.htm

Adroid 4.0 HttpURLConnection拋異常解決方法 http://www.linuxidc.com/Linux/2013-03/81085.htm

node.js+Android(使用HttpURLConnection和HttpClient)實現文件上傳 http://www.linuxidc.com/Linux/2012-02/53532.htm

在Android上用HttpURLConnection獲取網頁內容 http://www.linuxidc.com/Linux/2011-08/41211.htm

首先我們來寫個JSP頁面並看看浏覽器發出的Http請求是什麼樣的

JSP頁面:

<html>
 <head>
  <meta charset="UTF-8">
  <title>TestSubmit</title>
 </head>
 <body>
  <form name="upform" action="upload.do" method="POST" enctype="multipart/form-data">
  參數<input type="text" name="username"/><br/>
  文件1<input type="file" name="file1"/><br/>
  文件2<input type="file" name="file2"/><br/>
  <input type="submit" value="Submit" /><br/>
  </form>
 </body>
</html>

假如我參數寫的內容是hello word,然後二個文件是二個簡單的txt文件,form提交的信息為:

-----------------------------7da2e536604c8
Content-Disposition: form-data; name="username"

hello word
-----------------------------7da2e536604c8
Content-Disposition: form-data; name="file1"; filename="D:/haha.txt"
Content-Type: text/plain

haha
hahaha
-----------------------------7da2e536604c8
Content-Disposition: form-data; name="file2"; filename="D:/huhu.txt"
Content-Type: text/plain

messi
huhu
-----------------------------7da2e536604c8--

研究下規律發現有如下幾點特征:

1. 第一行是“-----------------------------7da2e536604c8”作為分隔符,然後是“/r/n”回車換行符。 這個7da2e536604c8分隔符浏覽器是隨機生成的。

2. 第二行是Content-Disposition: form-data; name="username"。代表form表單的數據域,name對應頁面input標簽的name值。

3. 第三行是“/r/n”回車換行符。

4. 第四行是參數username的值。

5. 第五行是7da2e536604c8分隔符。

6. 從第六行到第十行和從第十二行到第十六行,分別是上傳的兩個文件的數據域。

7. 第十二行是Content-Disposition: form-data; name="file2"; filename="D:/huhu.txt"。name對應頁面input標簽的name值,filename對應要上傳的文件名(包括路徑在內)。

8. 第十三行如果是文件就有Content-Type: text/plain。這裡上傳的是txt文件所以是text/plain,如果上穿的是jpg圖片的話就是image/jpg了,可以自己試試看看。然後就是回車換行符。

9. 第十五、十六行就是文件的內容了。如:

messi
huhu

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-08/104946p2.htm

Copyright © Linux教程網 All Rights Reserved