[go] go 언어의 mime/multipart 패키지를 이용한 멀티파트 폼 데이터 추출
이번에는 Go 언어에서 mime/multipart
패키지를 사용하여 HTTP 요청의 멀티파트 폼 데이터를 추출하는 방법에 대해 알아보겠습니다.
멀티파트 폼 데이터란?
멀티파트 폼 데이터는 웹 서버로 여러 종류의 데이터를 동시에 전송할 때 사용됩니다. 파일과 텍스트 데이터 등을 함께 전송할 수 있으며, HTTP 요청의 본문에 멀티파트 형식으로 인코딩되어 전송됩니다.
mime/multipart
패키지
Go 언어에서는 mime/multipart
패키지를 사용하여 멀티파트 폼 데이터를 처리할 수 있습니다. 이 패키지는 HTTP 요청의 본문을 파싱하고 각 파트의 데이터를 추출할 수 있는 기능을 제공합니다.
package main
import (
"fmt"
"log"
"net/http"
"mime/multipart"
)
func handler(w http.ResponseWriter, r *http.Request) {
err := r.ParseMultipartForm(32 << 20) // 32MB까지의 데이터를 파싱할 수 있도록 설정
if err != nil {
log.Println(err)
http.Error(w, "Failed to parse multipart form", http.StatusBadRequest)
return
}
form := r.MultipartForm
files := form.File["fileupload"] // "fileupload"는 폼에서 파일을 업로드한 필드 이름
for _, file := range files {
f, err := file.Open()
if err != nil {
log.Println(err)
http.Error(w, "Failed to open file", http.StatusInternalServerError)
return
}
defer f.Close()
// 파일 처리 로직
fmt.Fprintf(w, "Uploaded file: %v\n", file.Filename)
}
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
위 예제에서는 net/http
패키지를 사용하여 HTTP 요청을 처리하는 핸들러 함수에서 r.ParseMultipartForm
메서드를 이용하여 멀티파트 폼 데이터를 파싱하고, 각 파일을 추출하여 처리하는 방법을 보여주고 있습니다.
결론
mime/multipart
패키지를 사용하면 Go 언어에서 간단하게 멀티파트 폼 데이터를 처리할 수 있습니다. 이를 통해 파일 업로드와 같이 멀티파트 형식으로 데이터를 전송하는 기능을 쉽게 구현할 수 있습니다.
참고 문헌:
- Go 공식 문서: https://pkg.go.dev/mime/multipart
이상으로 Go 언어를 사용하여 멀티파트 폼 데이터를 추출하는 방법에 대해 알아보았습니다. 부가적인 질문이 있으시다면 언제든지 물어봐주세요!