[go] 멀티파트 폼 데이터를 처리하는 데 사용되는 go 언어 mime/multipar 패키지의 기능

multipart/form-data는 웹 양식의 일반적인 인코딩 방식으로, 파일 업로드 및 텍스트 데이터를 함께 전송하는 데 사용됩니다. Go 언어의 mime/multipart 패키지는 multipart/form-data를 처리하기 위한 강력한 기능을 제공합니다.

multipart.Reader

mime/multipart 패키지의 NewReader 함수를 사용하여 multipart/form-data 요청의 본문을 읽을 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다:

package main

import (
	"bytes"
	"mime/multipart"
	"net/http"
)

func main() {
	body := &bytes.Buffer{}
	writer := multipart.NewWriter(body)
	part, _ := writer.CreateFormFile("file", "example.txt")
	// 파일 내용을 part에 작성
	writer.Close()

	request, _ := http.NewRequest("POST", "http://example.com/upload", body)
	request.Header.Set("Content-Type", writer.FormDataContentType())

	client := &http.Client{}
	client.Do(request)
}

위에서, multipart.NewWriter 함수를 사용하여 multipart.Writer를 만들고, 각 파일이나 필드를 CreateFormFile 또는 CreateFormField로 추가한 후, 본문을 생성하여 요청으로 보냅니다.

multipart.FileHeader

multipart.FileHeader 구조체는 파일 업로드에 대한 정보를 담고 있습니다. 이를 통해 파일 이름, 크기, 그리고 multipart 응답에서의 헤더와 같은 정보에 접근할 수 있습니다.

multipart.Form

또한, multipart/form-data를 쉽게 파싱하기 위해 multipart.Reader를 사용하여 multipart.Form을 생성할 수 있습니다. 이를 통해 파일과 폼 데이터를 쉽게 사용할 수 있습니다.

form, _ := reader.ReadForm(maxMemory)
defer form.RemoveAll()
fileHeaders := form.File["myFile"]
// 파일 처리 로직

또한, ReadForm을 사용하여 multipart.Form을 파싱하고, 파일 헤더 및 해당 파일에 접근할 수 있습니다.

이렇게 함으로써, Go 언어의 mime/multipart 패키지를 활용하여 multipart/form-data를 처리할 수 있습니다. 이를 통해 웹 양식을 통해 파일 업로드 및 텍스트 데이터를 처리하는 데 있어서 편리하게 작업할 수 있습니다.

참고 자료: