[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.RequestParseMultipartForm 메서드를 사용하여 멀티파트 폼 데이터를 파싱하고, FormFile 메서드를 사용하여 특정 필드에서 파일을 추출하는 방법을 보여줍니다.

결론

Go 언어에서 멀티파트 폼 데이터를 다루는 방법을 알아보았습니다. “multipart” 라이브러리를 사용하면 멀티파트 폼 데이터를 쉽게 파싱하고 파일을 추출할 수 있습니다.

더 많은 정보를 원한다면 Go 공식 문서를 참고하세요.