웹 페이지에서 이미지 업로드 및 표시 기능은 사용자가 자신의 로컬 시스템에서 이미지 파일을 선택하여 웹 서버에 업로드할 수 있게 해줍니다. JSP와 서블릿에서는 이를 위해 멀티파트 요청을 처리해야 하며, 이를 위해 일반적으로 Apache Commons FileUpload 라이브러리 같은 도구를 사용합니다. 다음은 이미지를 업로드하고 표시하는 예제입니다.
예제 : 이미지 업로드 및 서버에 저장
이 예제는 사용자로부터 이미지를 받아 서버의 지정된 디렉토리에 저장합니다.
imageUpload.jsp
<!DOCTYPE html>
<html>
<head>
<title>Upload Image</title>
</head>
<body>
<form action="uploadHandler.jsp" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="file">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
uploadHandler.jsp
<%@ page import="java.io.*,java.util.*,javax.servlet.*,javax.servlet.http.*"%>
<%@ page import="org.apache.commons.fileupload.*,org.apache.commons.fileupload.disk.*,org.apache.commons.fileupload.servlet.*"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Image Upload Handler</title>
</head>
<body>
<%
// Configure upload settings
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
// Parse the request to get file items
List fileItems = upload.parseRequest(request);
// Process the uploaded file items
Iterator i = fileItems.iterator();
while ( i.hasNext () ) {
FileItem fi = (FileItem)i.next();
if (!fi.isFormField()) {
// Get 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: " + fileName + "<br>");
}
}
} catch(Exception ex) {
System.out.println(ex);
}
%>
</body>
</html>
관련 전문용어 설명
- 멀티파트/폼-데이터 (Multipart/form-data): 파일 업로드를 위해 사용되는 HTTP POST 요청의 인코딩 타입입니다. 이를 통해 파일 데이터와 텍스트 데이터를 함께 전송할 수 있습니다.
- Apache Commons FileUpload: Java 기반의 파일 업로드 라이브러리로, 멀티파트 요청을 쉽게 처리할 수 있도록 해줍니다.
- DiskFileItemFactory & ServletFileUpload: Apache Commons FileUpload 라이브러리의 클래스로, 멀티파트 요청을 처리하는 데 사용됩니다.
'jsp' 카테고리의 다른 글
이메일 전송: JSP를 사용하여 이메일을 전송하는 예제. (0) | 2023.12.25 |
---|---|
데이터 검색 및 페이징: 데이터베이스에서 데이터를 검색하고 페이징 처리하는 방법을 배우는 예제. (0) | 2023.12.25 |
이미지 표시: JSP 페이지에서 이미지를 표시하는 방법을 배우는 예제. (0) | 2023.12.25 |
데이터베이스 입력: 사용자로부터 데이터를 입력받아 데이터베이스에 저장하는 예제. (0) | 2023.12.25 |
쿼리 문자열 다루기: URL에서 쿼리 문자열을 추출하고 파싱하는 예제. (0) | 2023.12.25 |