[go] html/escape 패키지를 사용한 웹 애플리케이션의 파일 업로드 처리
- 소개
- 파일 업로드 처리
- 파일 업로드 예제
- 결론
1. 소개
웹 애플리케이션은 종종 사용자가 파일을 업로드할 수 있는 기능을 제공합니다. 이는 프로필 이미지, 문서, 동영상 등을 업로드할 수 있는 기능을 말합니다. Go 언어의 html/template
패키지와 net/http
패키지를 사용하여 웹 애플리케이션에서 파일 업로드를 처리하는 방법에 대해 알아보겠습니다.
2. 파일 업로드 처리
Go 언어에서 웹 애플리케이션에 파일 업로드를 처리하기 위해서는 다음과 같은 단계를 따릅니다.
- HTML 폼에서
enctype="multipart/form-data"
속성을 설정하여 파일 업로드를 지원할 수 있도록 설정합니다. - 웹 서버에서 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 언어를 사용하여 웹 애플리케이션에서 파일 업로드를 처리하는 방법에 대해 알아보았습니다. 이를 통해 사용자가 웹 애플리케이션에 파일을 업로드할 수 있는 기능을 추가할 수 있게 되었습니다.