Servlet3.0文件上傳


Servelt3.0文件上傳作為一種便捷的文件上傳方式很是值得我們去應用的

1.Servlet3.0文件上傳使用步驟

 

  • 瀏覽器端的要求
    • 表單的提交方法必須是post
    • 必須有一個文件上傳組件 <input type="file" name="f"/>
    • 必須設置表單的enctype="multipart/form-data
    • 1 <form action="/upload/upload3" enctype="multipart/form-data"
      2         method="post">
      3         用戶名:<input type="text" name="username"><br> 
      4         文件:<input
      5             type="file" name="f"> 
      6         <input type="submit"><br>
      7     </form>

       

  • 服務器端的要求
    • 在Servelt上添加注解  @MultipartConfig
    • 1 /**
      2  * Servlet3.0文件上傳下載
      3  */
      4 @WebServlet("/upload3")
      5 @MultipartConfig
      6 public class upload3 extends HttpServlet {
      7     private static final long serialVersionUID = 1L;
      8        
      9     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       

2.Servlet3.0文件上傳如何獲取數據

  • 獲取普通上傳組件   request.getParameter(name屬性的值);
  • 獲取文件上傳組件   Part p =  request.getPart("表單文件組件的name名");
    • 獲取表單文件的name名
      //獲取表單提交頁面name的屬性值
                  String name = part.getName();

       

    • 獲取真實文件名
      //獲取文件真實文件名
      			String header = part.getHeader("content-disposition");
      			String realName=header.substring(header.indexOf("filename=")+10,header.length()-1);
      
    • 獲取文件大小
      //獲取文件的大小
                  long size = part.getSize();

       

    • 獲取文件的輸入流
      			//獲取文件的輸入流
      			InputStream inputStream = part.getInputStream();
      

3.Servlet3.0文件上傳可能會遇到的問題

 

  • 名字重復的問題 如果用戶提交了兩個1.png只會保存第一次 這樣在實際開發中是很不可取的 解決方法有一下
    • 采用隨機名稱DSJDLSJDIHU739832hsdhf.png
  • 文件安全問題  如果文件都放在WebContext目錄下 那么在互聯網上任何人都可以訪問的到 那么針對重要的文件可以這樣做
    • 放在meta-inf目錄下
    • 放在web-inf目錄下
    • 放在項目外部 計算機文件夾中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM