게으른 개발자의 끄적거림

jsp 카메라 접근 및 사진첩 접근 방법

끄적잉 2023. 12. 19. 22:00
728x90

 모바일에서 카메라로 사진을 찍거나 갤러리에서 이미지를 선택하는 기능을 구현하려면 HTML, JavaScript, 그리고 JSP를 조합하여 사용해야 합니다. 아래는 간단한 예제 코드입니다.

1. **HTML과 JavaScript로 카메라 및 갤러리 접근 구현:**


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Camera and Gallery Access</title>
</head>
<body>
    <h1>Camera and Gallery Access</h1>

    <!-- 카메라에서 사진 찍기 -->
    <input type="file" accept="image/*" capture="camera" id="cameraInput" />

    <!-- 갤러리에서 이미지 선택 -->
    <input type="file" accept="image/*" id="galleryInput" />

    <script>
        // 카메라에서 찍은 이미지 처리
        document.getElementById('cameraInput').addEventListener('change', function (event) {
            var file = event.target.files[0];
            // 여기에서 서버로 파일 업로드 등의 작업을 수행할 수 있습니다.
        });

        // 갤러리에서 선택한 이미지 처리
        document.getElementById('galleryInput').addEventListener('change', function (event) {
            var file = event.target.files[0];
            // 여기에서 서버로 파일 업로드 등의 작업을 수행할 수 있습니다.
        });
    </script>
</body>
</html>

 

 



2. **JSP로 서버 측 처리 추가:**

JSP 파일에서는 위의 HTML과 JavaScript 코드에서 수행할 동작을 서버 측에서 처리할 수 있습니다. 예를 들어, 이미지를 업로드하고 저장하는 등의 작업을 수행할 수 있습니다.


<%@ page import="java.io.*, java.nio.file.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String uploadPath = "경로를_지정하세요"; // 이미지를 저장할 경로

    Part cameraPart = request.getPart("cameraInput");
    String cameraFileName = getFileName(cameraPart);
    cameraPart.write(uploadPath + File.separator + cameraFileName);

    Part galleryPart = request.getPart("galleryInput");
    String galleryFileName = getFileName(galleryPart);
    galleryPart.write(uploadPath + File.separator + galleryFileName);

    out.println("이미지 업로드 완료");
%>

<%
    // Part에서 파일 이름을 추출하는 유틸리티 메서드
    private String getFileName(final Part part) {
        final String partHeader = part.getHeader("content-disposition");
        for (String content : part.getHeader("content-disposition").split(";")) {
            if (content.trim().startsWith("filename")) {
                return content.substring(content.indexOf('=') + 1).trim().replace("\"", "");
            }
        }
        return null;
    }
%>


이 예제는 간단한 형태의 이미지 업로드 및 저장 코드이며, 실제로는 보안 및 예외 처리 등을 고려해야 합니다. 또한, 파일 경로 및 저장 방식 등은 프로젝트의 요구사항에 따라 조정되어야 합니다.

728x90