> 백엔드 개발 > Golang > Go Gin 프레임워크에서 JSON과 이미지 업로드를 동시에 처리하는 방법은 무엇입니까?

Go Gin 프레임워크에서 JSON과 이미지 업로드를 동시에 처리하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-29 04:12:09
원래의
666명이 탐색했습니다.

How to Handle JSON and Image Upload Simultaneously in a Go Gin Framework?

Gin을 사용하여 Go에서 JSON 데이터 및 이미지 수신

Go에서는 Gin 프레임워크를 사용하여 HTTP 요청을 처리하고 데이터를 사용자 정의 요청 구조에 바인딩할 수 있습니다. 단일 multipart/form-data 요청으로 JSON 데이터와 이미지를 모두 수신하려면 다음 요청 핸들러를 정의할 수 있습니다.

func UpdateProfile(c *gin.Context) {
    type request struct {
        Avatar      *multipart.FileHeader `form:"avatar" binding:"required"`
        User struct {
            Username    string `json:"username" binding:"required,min=4,max=20"`
            Description string `json:"description" binding:"required,max=100"`
        } `form:"user" binding:"required"`
    }

    var updateRequest request

    // Bind the request data to the request structure
    if err := c.ShouldBindWith(&updateRequest, binding.FormMultipart); err != nil {
        // Return an appropriate error response
        _ = c.AbortWithError(http.StatusBadRequest, err)
        return
    }

    // Handle the image
    // ...

    // Handle the JSON data
    // ...
}
로그인 후 복사

요청 예시:

두 가지를 모두 사용하여 요청을 보내려면 JSON 데이터 및 이미지는 multipart/form-data 콘텐츠 유형을 사용합니다. 요청 본문은 다음과 같이 구성되어야 합니다.

--boundary
Content-Disposition: form-data; name="avatar"; filename="profile.jpg"
Content-Type: image/jpeg
//... image data
--boundary
Content-Disposition: form-data; name="user"
Content-Type: application/json
{
    "username": "username",
    "description": "description"
}
--boundary--
로그인 후 복사

참고:

  • 바인딩 태그는 적절한 필드 유효성 검사가 발생하도록 보장합니다.
  • c.ShouldBindWith 명시적으로 multipart/form-data용으로 설계된 FormMultipart 바인딩 엔진을 사용하여 요청 데이터를 바인딩합니다. 요청합니다.

위 내용은 Go Gin 프레임워크에서 JSON과 이미지 업로드를 동시에 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿