[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 언어를 사용하여 멀티파트 폼 데이터를 추출하는 방법에 대해 알아보았습니다. 부가적인 질문이 있으시다면 언제든지 물어봐주세요!