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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

文件上传入门

發布時間:2024/4/13 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文件上传入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用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方法得到數據輸入流,從而讀取上傳數據。

    package cn.learn.web.servlet;import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.io.IOUtils;public class Upload2Servlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 1.創建 DiskFileItemFactoryDiskFileItemFactory factory = new DiskFileItemFactory();// 2.創建ServletFileUpload upload = new ServletFileUpload(factory);try {// 底層通過request獲取數據,進行解析,將解析的數據封裝到List<FileItem>List<FileItem> items = upload.parseRequest(request);// 3.遍歷集合for (FileItem item : items) {if (item.isFormField()) {// 這就是得到了<input type="text" name="content">這樣的組件// String fieldName = item.getFieldName();// System.out.println(fieldName);//// String name = item.getName();// System.out.println(name);//// String msg = item.getString();// System.out.println(msg);} else {// 這就是得到了<input type="file"> 這樣的組件.// String fieldName = item.getFieldName();// System.out.println("上傳組件的名稱:" + fieldName);//String name = item.getName(); // 上傳文件名稱System.out.println(name);name = name.substring(name.lastIndexOf("\\") + 1);// System.out.println("上傳組件:" + name);//// String msg = item.getString();// System.out.println(msg);// 獲取上傳文件內容,完成文件 上傳操作// InputStream is = item.getInputStream();// byte[] b = new byte[1024];// int len = -1;FileOutputStream fos = new FileOutputStream("d:/upload/"+ name);// while ((len = is.read(b)) != -1) {//// fos.write(b, 0, len);//// }// fos.close();// is.close();IOUtils.copy(item.getInputStream(), fos);}}} catch (FileUploadException e) {e.printStackTrace();}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

    ?

    超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

    總結

    以上是生活随笔為你收集整理的文件上传入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。