[go] go 언어에서 멀티파트 폼 데이터를 다루는 방법
웹 애플리케이션을 개발하다보면 클라이언트로부터 받은 멀티파트 폼 데이터를 처리해야 하는 경우가 많습니다. 멀티파트 폼 데이터는 파일 업로드와 함께 텍스트 데이터를 함께 전송할 때 사용됩니다. 이번 글에서는 Go 언어로 멀티파트 폼 데이터를 다루는 방법에 대해 알아보겠습니다.
MIME 멀티파트 폼 데이터
멀티파트 폼 데이터는 MIME 멀티파트 형식으로 전송되며, 각 부분은 고유한 MIME 타입을 갖습니다. 각 부분은 헤더와 본문으로 구성되어 있고, 헤더에는 Content-Disposition, Content-Type 등의 정보가 포함됩니다. 멀티파트 폼 데이터를 처리하려면 각 부분을 파싱하여 원하는 데이터를 추출해야 합니다.
멀티파트 폼 데이터 다루는 라이브러리
Go 언어에는 멀티파트 폼 데이터를 처리하기 위한 다양한 라이브러리가 있습니다. 그 중에서도 “multipart” 라이브러리는 표준 라이브러리로 제공되며, 멀티파트 폼 데이터를 손쉽게 다룰 수 있도록 도와줍니다.
package main
import (
"fmt"
"io"
"mime/multipart"
"net/http"
)
func uploadHandler(w http.ResponseWriter, r *http.Request) {
err := r.ParseMultipartForm(32 << 20) // 최대 32MB까지 허용
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
file, handler, err := r.FormFile("file")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer file.Close()
fmt.Fprintf(w, "File uploaded: %+v\n", handler.Filename)
}
위의 예제에서는 http.Request
의 ParseMultipartForm
메서드를 사용하여 멀티파트 폼 데이터를 파싱하고, FormFile
메서드를 사용하여 특정 필드에서 파일을 추출하는 방법을 보여줍니다.
결론
Go 언어에서 멀티파트 폼 데이터를 다루는 방법을 알아보았습니다. “multipart” 라이브러리를 사용하면 멀티파트 폼 데이터를 쉽게 파싱하고 파일을 추출할 수 있습니다.
더 많은 정보를 원한다면 Go 공식 문서를 참고하세요.