[go] html/escape 패키지를 사용한 웹 애플리케이션의 파일 업로드 처리
  1. 소개
  2. 파일 업로드 처리
  3. 파일 업로드 예제
  4. 결론

1. 소개

웹 애플리케이션은 종종 사용자가 파일을 업로드할 수 있는 기능을 제공합니다. 이는 프로필 이미지, 문서, 동영상 등을 업로드할 수 있는 기능을 말합니다. Go 언어의 html/template 패키지와 net/http 패키지를 사용하여 웹 애플리케이션에서 파일 업로드를 처리하는 방법에 대해 알아보겠습니다.

2. 파일 업로드 처리

Go 언어에서 웹 애플리케이션에 파일 업로드를 처리하기 위해서는 다음과 같은 단계를 따릅니다.

  1. HTML 폼에서 enctype="multipart/form-data" 속성을 설정하여 파일 업로드를 지원할 수 있도록 설정합니다.
  2. 웹 서버에서 HTTP 요청을 받고 파일을 파싱하여 원하는 위치에 저장합니다.

3. 파일 업로드 예제

아래는 파일 업로드를 처리하는 간단한 Go 언어의 예제 코드입니다.

package main

import (
	"fmt"
	"html/template"
	"net/http"
	"os"
)

func uploadFile(w http.ResponseWriter, r *http.Request) {
	if r.Method == "GET" {
		t, _ := template.ParseFiles("upload.html")
		t.Execute(w, nil)
	} else {
		r.ParseMultipartForm(10 << 20) // 최대 파일 크기 지정
		file, handler, err := r.FormFile("file")
		if err != nil {
			fmt.Println("Error Retrieving the File")
			fmt.Println(err)
			return
		}
		defer file.Close()
		fmt.Fprintf(w, "%v", handler.Header)
		f, err := os.OpenFile("./"+handler.Filename, os.O_WRONLY|os.O_CREATE, 0666)
		if err != nil {
			fmt.Println(err)
			return
		}
		defer f.Close()
		io.Copy(f, file)
		fmt.Fprintf(w, "파일 업로드 완료")
	}
}

func main() {
	http.HandleFunc("/upload", uploadFile)
	http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
	http.ListenAndServe(":8080", nil)
}

위 코드에서 http.HandleFunc("/upload", uploadFile)는 파일 업로드를 처리하는 핸들러를 등록하고, r.ParseMultipartForm은 요청에서 멀티파트 form을 파싱합니다.

4. 결론

이제 Go 언어를 사용하여 웹 애플리케이션에서 파일 업로드를 처리하는 방법에 대해 알아보았습니다. 이를 통해 사용자가 웹 애플리케이션에 파일을 업로드할 수 있는 기능을 추가할 수 있게 되었습니다.