본문 바로가기
개발/Java

[Java] Java로 파일 업로드 쉽게 해봐요!!!

by 쓸있쏜 2025. 1. 6.

자. 이제 받은 파일 정보를 서버에 만들어보자.

 

HTML에서 JavaScript와 Java로 파일 업로드하기: 마법 같은 이야기

안녕, 여러분! 오늘은 파일 업로드라는 재미있는 주제로 모험을 떠나 볼 거예요. "파일 업로드?" 조금 생소할 수도 있겠죠? 너무 걱정하지 마세요. 여러분이 손을 잡고 따라오기만 하면 돼요. 자, HTML, JavaScript, 그리고 Java를 사용해 우리의 파일이 어떻게 서버로 날아가는지 함께 알아보도록 해요. 준비됐나요?


Step 1: HTML로 파일 선택 창 만들기

먼저 우리가 해야 할 일은 아주 간단한 HTML 코드를 사용하는 거예요. 여기에서 파일을 선택할 수 있는 귀여운 버튼을 만들어 볼게요.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>파일 업로드</title>
</head>
<body>
  <h1>파일 업로드 해보기</h1>
  <form id="uploadForm">
    <input type="file" id="fileInput" />
    <button type="button" id="uploadButton">업로드하기</button>
  </form>
  <p id="status"></p>

  <script src="app.js"></script>
</body>
</html>

와우! 벌써 첫 단계를 끝냈어요. 이제 화면에 파일 선택 버튼이 나타났죠? 그런데 이대로는 파일을 올릴 수 없으니 걱정 말고 다음으로 넘어가 봐요.


Step 2: JavaScript로 파일 전송 준비

이제 우리의 파일을 서버로 날려보낼 준비를 할 거예요. 파일은 단순한 데이터 덩어리라서, JavaScript를 사용해 멋지게 다뤄줄 수 있어요.

// app.js
document.getElementById("uploadButton").addEventListener("click", () => {
  const fileInput = document.getElementById("fileInput");
  const file = fileInput.files[0];

  if (!file) {
    document.getElementById("status").innerText = "파일을 선택해주세요!";
    return;
  }

  const formData = new FormData();
  formData.append("file", file);

  fetch("http://localhost:8080/upload", {
    method: "POST",
    body: formData,
  })
    .then((response) => response.text())
    .then((data) => {
      document.getElementById("status").innerText = `업로드 성공: ${data}`;
    })
    .catch((error) => {
      document.getElementById("status").innerText = `업로드 실패: ${error}`;
    });
});

와우! 이 코드의 핵심은 FormData예요. 이 친구는 파일을 아주 쉽게 다룰 수 있도록 도와준답니다. 그리고 fetch를 사용해 서버로 파일을 전송할 거예요. 우리 서버가 받을 준비가 됐는지 확인해 볼까요?

 


Step 3: Java로 파일 업로드 처리

드디어 서버 쪽 코드입니다! Java로 서버를 만들고, 파일을 업로드하는 과정을 다뤄볼게요. 스프링 부트를 이용해서 간단히 만들어 볼 거예요.

@RestController
public class FileUploadController {

    @PostMapping("/upload")
    public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file) {
        try {
            // 파일 저장 경로 설정
            String uploadDir = "uploads/";
            File directory = new File(uploadDir);
            if (!directory.exists()) {
                directory.mkdirs();
            }

            // 파일 저장
            Path filePath = Paths.get(uploadDir + file.getOriginalFilename());
            Files.write(filePath, file.getBytes());

            return ResponseEntity.ok("파일 업로드 완료: " + file.getOriginalFilename());
        } catch (IOException e) {
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("업로드 실패!");
        }
    }
}

여기서 중요한 점은 MultipartFile이라는 친구예요. 이 친구는 클라이언트에서 보낸 파일을 아주 쉽게 받아줄 수 있어요. 파일을 받아서 저장소에 저장하는 부분은 Files.write 메서드를 사용해요. 간단하죠?


Step 4: 실행하고 감탄하기

모든 준비가 끝났어요! 이제 우리의 HTML 파일을 브라우저에서 열고, 파일을 선택한 뒤 "업로드하기" 버튼을 눌러보세요. 콘솔이나 서버 로그에서 파일이 제대로 올라갔는지 확인해 볼 수 있을 거예요.


마무리하며

오늘 우리는 HTML에서 시작해 JavaScript와 Java를 연결하며 파일 업로드를 완성했어요. 어떤가요? 생각보다 어렵지 않죠? 마치 파일이 살아 있는 것처럼, 우리 코드가 데이터를 주고받는 과정은 정말 흥미로워요. 여러분도 이런 방식으로 더 멋진 기능을 만들어보세요!

이제 손을 들어봐요! 어떤 질문이든 환영합니다. 😊

 

댓글