文件上传入门
使用commons-fileupload
1.導入jar包
?? ?commons-fileupload-1.2.1.jar ?文件上傳
?? ?commons-io-1.4.jar 它是提供的io工具.
?? ?介紹commons-fileupload
?? ??? ?它有三個核心
?? ??? ??? ?1.DiskFileItemFactory類
?? ??? ??? ?2.ServletFileUpload類
?? ??? ??? ?3.FileItem
?? ??? ??? ?
2.快速入門:
?? ??? ?1.創建upload2.jsp頁面
?? ??? ??? ?<form action="${pageContext.request.contextPath}/upload2" method="post" encType="multipart/form-data">
?? ??? ??? ??? ?<input type="file" name="f"><br>
?? ??? ??? ??? ?<input type="submit" value="上傳">
?? ??? ??? ?</form>
?? ??? ?2.創建Upload2Servlet
?? ??? ??? ?1.創建一個DiskFileItemFactory
?? ??? ??? ??? ?DiskFileItemFactory factory=new DiskFileItemFactory();
?? ??? ??? ?2.創建ServletFileUpload類?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?ServletFileUpload upload=new ServletFileUpload(factory);?? ??? ??? ??? ??? ?
?? ??? ??? ?3.解析所有上傳數據
?? ??? ??? ??? ?List<FileItem> items = upload.parseRequest(request);
?? ??? ??? ??? ?
?? ??? ?3.了遍歷items集合,集合中的每一項,就是一個上傳數據.
?? ??? ??? ?1.isFormField();
?? ??? ??? ??? ?
?? ??? ??? ?2.getFieldName();
?? ??? ??? ??? ?返回值String,得到組件名稱 ?<input name="">
?? ??? ??? ?3.getName();
?? ??? ??? ??? ?返回值是String,得到的是上傳文件的名稱.
?? ??? ??? ??? ?注意:瀏覽器不同,它們得到的效果不一樣。
?? ??? ??? ??? ??? ?1.包含全路徑名稱 ?例如: C:\Users\Administrator\Desktop\a.txt
?? ??? ??? ??? ??? ?2.只包含上傳文件名稱 例如:a.txt
?? ??? ??? ??? ??? ?
?? ??? ??? ?4.getString();
?? ??? ??? ??? ?這個方法可以獲取非上傳組件的內容,相當于 ?getParameter方法作用。
?? ??? ??? ??? ?
?? ??? ??? ??? ?如果是上傳組件,上傳的文件是文本文件,可以獲取到文件文件的內容。
?? ??? ??? ??? ?但是如果不是文件文件,例如:是一張圖片,這樣獲取合適嗎?
?? ??? ??? ??? ??? ?
?? ??? ??? ?5.獲取上傳文件的內容,保存到服務器端.
?? ??? ??? ??? ?item.getInputStream();它是用于讀取上傳文件內容的輸入流.
?? ??? ??? ??? ?使用文件復制操作就可以完成文件上傳。
?? ??? ??? ??? ?
?? ??? ??? ??? ?IOUtils.copy(item.getInputStream(), fos);
文件上傳步驟
1、創建DiskFileItemFactory對象,設置緩沖區大小和臨時文件目錄
2、使用DiskFileItemFactory 對象創建ServletFileUpload對象,并設置上傳文件的大小限制。
3、調用ServletFileUpload.parseRequest方法解析request對象,得到一個保存了所有上傳內容的List對象。
4、對list進行迭代,每迭代一個FileItem對象,調用其isFormField方法判斷是否是上傳文件
-
-
- True 為普通表單字段,則調用getFieldName、getString方法得到字段名和字段值
- False 為上傳文件,則調用getInputStream方法得到數據輸入流,從而讀取上傳數據。
-
?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
- 上一篇: 文件上传介绍
- 下一篇: DiskFileItemFactory