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를 처리할 수 있습니다. 이를 통해 웹 양식을 통해 파일 업로드 및 텍스트 데이터를 처리하는 데 있어서 편리하게 작업할 수 있습니다.
참고 자료: