今天又搞了一下,jsp文件上傳組件。感覺,實際上,文件上傳,也就是一個客戶端上傳一個文件(有時,裏面可能包含一些隱藏字段),服務器端(通過request.getInputStream())獲得一個 InputStream 輸入流,然後在裏面截取自己想要的內容。
有幾個要點:
一。客戶端代碼:
<form id="upload" name="upload" method="post" action="DealFileUpload" enctype="multipart/form-data">
hidden data: <input type="hidden" name="id" value="123456"/>
choose a file: <input type="file" name="uploadFile"/>
<br/>
<input type="submit" name="submit" value="Submit"/>
</form>
form 的類型一定得是: mutilpart/form-data
二。服務端代碼:當獲得這個輸入流後,一定要先把不要的內容(包含垃圾內容)刪掉。
(1)上傳的文件內容(爲txt文檔):
JDK,Tomcat 6,MyEclipse,MS SQLServer2005
mycontent
helloworld
(2)服務器端獲得的字符串內容:
-----------------------------7da1e41c60b8a
Content-Disposition: form-data; name="id"
123456
-----------------------------7da1e41c60b8a
Content-Disposition: form-data; name="uploadFile"; filename="D:\upload.txt.txt"
Content-Type: text/plain
JDK,Tomcat 6,MyEclipse,MS SQLServer2005
mycontent
helloworld
-----------------------------7da1e41c60b8a
Content-Disposition: form-data; name="submit"
鎻愪氦
-----------------------------7da1e41c60b8a--
在這裏,“-----------------------------7da1e41c60b8a--”我覺得是服務器記錄客戶端session的ID。
服務器端的任務,就是從這輸入流截取內容,然後保存到文件裏。