자바 웹 사용 getPart 수신 폼 파일 프로 세 스 분석

getPart 를 사용 하여 폼 파일 을 받 을 때 Tomcat 버 전 은 8 이상 이 어야 합 니 다.
프론트:form.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/test" method="post" enctype="multipart/form-data">
       :<input type="file" name="file"><br>
  <input type="submit" value="  ">
</form>
</body>
</html>
배경:TestServlet

@WebServlet(name = "TestServlet", urlPatterns = "/test")
@MultipartConfig
public class TestServlet extends HttpServlet {
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //    ,      name
    Part part = request.getPart("photo");
    	//         
    if (part.getSize() == 0) {
      request.setAttribute("msg", "       ");
      request.getRequestDispatcher("/register.jsp").forward(request, response);
      return;	//        
    }
    //     ,          :a.jpg
    String fileName = part.getSubmittedFileName();
    /**
              :
     photo.lastIndexOf('.')     "."   , 1          。
     photo.substring(photo.lastIndexOf('.')+1),                  。
     * */
    String fileType = fileName.substring(fileName.lastIndexOf('.') + 1);
    //            
    if (!("jpg".equalsIgnoreCase(fileType) || "jpeg".equalsIgnoreCase(fileType) || "png".equalsIgnoreCase(fileType))) {
      //      ,     ,           
      request.setAttribute("msg","          ");
      request.getRequestDispatcher("/form.jsp").forward(request, response);
      return;
    }
    //     ,             
    String path = "E:\\upload";
    File file = new File(path);
    if (!file.exists()) {
      file.mkdirs(); //        
    }
    // part        ,      
    part.write(path + "/" + fileName);
  }
}
String path = "E:\\testPic";원본 폴 더 경 로 를 설정 하여 Tomcat 서버 와 연결 을 끊 으 면 파일 이 손실 되 는 것 을 방지 할 수 있 습 니 다.이 폴 더 를 Tomcat 서버 에 마 운 트 해 야 합 니 다.
마 운 트 방식:Eclipse:
1.이 클립 스에 통 합 된 tomcat 서버 를 더 블 클릭

2,클릭 추가 웹 자원 추가

3.업로드 파일 을 로 컬 에 저장 하 는 폴 더 를 추가 하면 됩 니 다!

ctrl+S
IDEA:


최적화:업로드 그림 을 도구 클래스 로 밀봉 합 니 다.
UploadUtils.java

public class UploadUtils {
  public static String upload(Part part, HttpServletRequest request, HttpServletResponse response) {
    //       
    String photo = part.getSubmittedFileName();
    //      ,              
    photo = UUID.randomUUID() + photo;
    /**
              :
     photo.lastIndexOf('.')     "."   , 1          。
     photo.substring(photo.lastIndexOf('.')+1),                  。
     * */
    String fileType = photo.substring(photo.lastIndexOf('.') + 1);
    //            
    if (!("jpg".equalsIgnoreCase(fileType) || "jpeg".equalsIgnoreCase(fileType) || "png".equalsIgnoreCase(fileType))) {
      //      ,     
      return "";
    }
    //     ,             ,         ,        
    String path = "E:\\upload";
    File file = new File(path);
    if (!file.exists()) {
      file.mkdirs(); //        
    }
    // part        ,      
    try {
      part.write(path + "/" + photo);
    } catch (IOException e) {
      e.printStackTrace();
    }
    return photo;
  }
}
호출 도구 클래스:

@WebServlet(name = "TestServlet", urlPatterns = "/test")
@MultipartConfig
public class TestServlet extends HttpServlet {
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
  //    
  Part part = request.getPart("photo");
  //          ,        ,       
  if (part.getSize() == 0) {
    request.setAttribute("msg", "       ");
    request.getRequestDispatcher("/register.jsp").forward(request, response);
    return;
  }
  String photo = UploadUtils.upload(part, request, response);
  //  photo       ,     ,        ,        
  if (photo == "") {
    request.setAttribute("msg", "          , png,jpg,jpeg");
    request.getRequestDispatcher("/register.jsp").forward(request, response);
    return;
  }
  //      ,      ,           
  ............................................
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기