JSP를 HTML 양식 태그와 함께 사용하면 사용자가 서버에 파일을 업로드할 수 있습니다. 업로드된 파일은 텍스트 파일, 바이너리, 이미지 파일 또는 모든 문서일 수 있습니다.
파일 업로드 양식 만들기
이제 파일 업로드 양식을 만드는 방법에 대해 알아보겠습니다. 다음 HTML 코드는 업로더 양식을 만듭니다. 다음은 메모해야 할 중요한 사항입니다 -
-
양식 메서드 속성을 POST로 설정해야 합니다. 메소드 및 GET 메소드는 사용할 수 없습니다.
-
enctype 형식 속성은 multipart/form-data로 설정되어야 합니다. .
-
액션 형식 속성은 백엔드 서버에서 파일 업로드를 처리하는 JSP 파일로 설정되어야 합니다. 다음 예는 uploadFile.jsp를 사용하는 것입니다. 파일을 업로드할 프로그램 파일입니다.
-
단일 파일을 업로드하려면 단일 을 사용해야 합니다. 유형 ="파일" 속성이 있는 태그 . 여러 파일 업로드를 허용하려면 이름 속성 값이 다른 두 개 이상의 입력 태그를 포함하십시오. 브라우저는 찾아보기 버튼을 각각에 연결합니다.
예시
<html> <head> <title>File Uploading Form</title> </head> <body> <h3>File Upload:</h3> Select a file to upload: <br /> <form action = "UploadServlet" method = "post" enctype = "multipart/form-data"> <input type = "file" name = "file" size = "50" /> <br /> <input type = "submit" value = "Upload File" /> </form> </body> </html>
그러면 다음 결과가 표시됩니다. 이제 로컬 PC에서 파일을 선택할 수 있으며 사용자가 "파일 업로드"를 클릭하면 선택한 파일과 함께 양식이 제출됩니다 -
출력
File Upload Select a file to upload
참고 − 위의 형식은 더미 형식이며 작동하지 않습니다. 작동하려면 컴퓨터에서 위의 코드를 시도해야 합니다.
백엔드 JSP 스크립트 작성
이제 업로드된 파일이 저장될 위치를 정의하겠습니다. 프로그램에서 이것을 하드 코딩하거나 context-param과 같은 외부 구성을 사용하여 이 디렉토리 이름을 추가할 수도 있습니다. 다음과 같이 web.xml의 요소 -
<web-app> .... <context-param> <description>Location to store uploaded file</description> <param-name>file-upload</param-name> <param-value> c:\apache-tomcat-5.5.29\webapps\data\ </param-value> </context-param> .... </web-app>
다음은 UploadFile.jsp의 소스 코드입니다. . 이것은 한 번에 여러 파일의 업로드를 처리할 수 있습니다. 이제 파일 업로드를 진행하기 전에 다음 사항을 고려해 보겠습니다.
-
다음 예는 FileUpload에 따라 다릅니다.; 최신 버전의 commons-fileupload.x.x.jar이 있는지 확인하세요. 클래스 경로에 있는 파일. https://commons.apache.org/fileupload/에서 다운로드할 수 있습니다.
-
FileUpload는 Commons IO에 따라 다릅니다. 최신 버전의 commons-io-x.x.jar이 있는지 확인하세요. 클래스 경로에 있는 파일. https://commons.apache.org/io/에서 다운로드할 수 있습니다.
-
다음 예를 테스트하는 동안 maxFileSize보다 작은 크기의 파일을 업로드해야 합니다. 그렇지 않으면 파일이 업로드되지 않습니다.
-
c:\temp 디렉터리를 생성했는지 확인합니다. 및 c:\apache-tomcat5.5.29\webapps\data 미리 잘.
<%@ page import = "java.io.*,java.util.*, javax.servlet.*" %> <%@ page import = "javax.servlet.http.*" %> <%@ page import = "org.apache.commons.fileupload.*" %> <%@ page import = "org.apache.commons.fileupload.disk.*" %> <%@ page import = "org.apache.commons.fileupload.servlet.*" %> <%@ page import = "org.apache.commons.io.output.*" %> <% File file ; int maxFileSize = 5000 * 1024; int maxMemSize = 5000 * 1024; ServletContext context = pageContext.getServletContext(); String filePath = context.getInitParameter("file-upload"); // Verify the content type String contentType = request.getContentType(); if ((contentType.indexOf("multipart/form-data") >= 0)) { DiskFileItemFactory factory = new DiskFileItemFactory(); // maximum size that will be stored in memory factory.setSizeThreshold(maxMemSize); // Location to save data that is larger than maxMemSize. factory.setRepository(new File("c:\\temp")); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // maximum file size to be uploaded. upload.setSizeMax( maxFileSize ); try { // Parse the request to get file items. List fileItems = upload.parseRequest(request); // Process the uploaded file items Iterator i = fileItems.iterator(); out.println("<html>"); out.println("<head>"); out.println("<title>JSP File upload</title>"); out.println("</head>"); out.println("<body>"); while ( i.hasNext () ) { FileItem fi = (FileItem)i.next(); if ( !fi.isFormField () ) { // Get the uploaded file parameters String fieldName = fi.getFieldName(); String fileName = fi.getName(); boolean isInMemory = fi.isInMemory(); long sizeInBytes = fi.getSize(); // Write the file if( fileName.lastIndexOf("\\") >= 0 ) { file = new File( filePath + fileName.substring( fileName.lastIndexOf("\\"))) ; } else { file = new File( filePath + fileName.substring(fileName.lastIndexOf("\\")+1)) ; } fi.write( file ) ; out.println("Uploaded Filename: " + filePath + fileName + "<br>"); } } out.println("</body>"); out.println("</html>"); } catch(Exception ex) { System.out.println(ex); } } else { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet upload</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>No file uploaded</p>"); out.println("</body>"); out.println("</html>"); } %>
이제 위에서 만든 HTML 양식을 사용하여 파일을 업로드해 봅니다. https://localhost:8080/UploadFile.htm을 시도하면 다음 결과가 표시됩니다. 이렇게 하면 로컬 컴퓨터에서 파일을 업로드하는 데 도움이 됩니다.
File Upload Select a file to upload
JSP 스크립트가 제대로 작동하면 파일을 c:\apache-tomcat5.5.29\webapps\data\에 업로드해야 합니다. 디렉토리.