본문 바로가기

jsp

이미지 업로드: 웹 페이지에서 이미지를 업로드하고 표시하는 방법을 다루는 예제.

반응형

웹 페이지에서 이미지 업로드 및 표시 기능은 사용자가 자신의 로컬 시스템에서 이미지 파일을 선택하여 웹 서버에 업로드할 수 있게 해줍니다. 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 라이브러리의 클래스로, 멀티파트 요청을 처리하는 데 사용됩니다.

 

 

반응형