자바 웹 사용 getPart 수신 폼 파일 프로 세 스 분석
프론트: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;
}
// , ,
............................................
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.