>백엔드 개발 >Golang >Go\의 `multipart/form-data`를 사용하여 파일 및 양식 데이터를 어떻게 POST합니까?

Go\의 `multipart/form-data`를 사용하여 파일 및 양식 데이터를 어떻게 POST합니까?

DDD
DDD원래의
2024-11-25 09:48:38599검색

How do I POST Files and Form Data Using Go's `multipart/form-data`?

멀티파트/양식 데이터 요청의 POST 파일

멀티파트 요청은 파일 업로드에 자주 사용되며 파일과 함께 추가 양식 데이터를 제출해야 합니다. Go의 mime/multipart 및 http 패키지를 사용하여 이 문제를 어떻게 해결할 수 있는지 살펴보겠습니다.

다음 HTML 형식을 고려하세요.

<form action="/multipart" enctype="multipart/form-data" method="POST">
  <label for="file">Please select a File</label>
  <input>

Go에서는 다음과 같이 이 멀티파트 요청을 보낼 수 있습니다.

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

var buffer bytes.Buffer
w := multipart.NewWriter(&buffer)

// Write form fields
w.CreateFormField("input1")
w.WriteField("input1", "value1")

// Prepare to write a file
fd, err := os.Open("filename.dat")
if err != nil {
  return err
}

// Create a form field for the file
fw, err := w.CreateFormFile("file", fd.Name())
if err != nil {
  return err
}

// Copy file contents into form field
if _, err := io.Copy(fw, fd); err != nil {
  return err
}

// Close writer
w.Close()

// Prepare request
resp, err := http.Post(url, w.FormDataContentType(), &buffer)
if err != nil {
  return err
}

멀티파트 요청에서 파일을 보내는 핵심은 *multipart.Writer에서 CreateFormFile을 사용하여 다음을 수행하는 데 있습니다. 파일에 대해 특별히 양식 필드를 만듭니다. 일단 생성되면 io.Copy를 사용하여 파일 내용을 이 양식 필드에 쓸 수 있습니다.

위 내용은 Go\의 `multipart/form-data`를 사용하여 파일 및 양식 데이터를 어떻게 POST합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.