"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go에서 \"Content-Type: multipart/form-data\"로 게시할 때 \"[301 301 영구적으로 이동됨]\" 오류를 해결하는 방법은 무엇입니까?

Go에서 \"Content-Type: multipart/form-data\"로 게시할 때 \"[301 301 영구적으로 이동됨]\" 오류를 해결하는 방법은 무엇입니까?

2024년 11월 10일에 게시됨
검색:697

How to Resolve \

"Content-Type: multipart/form-data"로 게시

"Content-Type: multipart/form-data"를 사용하는 경우 "[301 301 Moved Permanently]"와 같은 오류 메시지가 나타날 수 있습니다. 이 문제는 일반적으로 API에 대한 POST 바이트 매개변수 및 문자열 인수를 시도할 때 발생합니다.

이 오류를 해결하고 multipart/form-data를 사용하여 POST 요청을 성공적으로 수행하려면 Go 코드를 다음과 같이 수정하면 됩니다.

func NewPostFile(url string, paramTexts map[string]interface{}, paramFile FileItem) ([]byte, error) {
    // Create a multipart body buffer and writer
    bodyBuf := &bytes.Buffer{}
    bodyWriter := multipart.NewWriter(bodyBuf)

    // Add string parameters
    for k, v := range paramTexts {
        bodyWriter.WriteField(k, v.(string))
    }

    // Add file parameter
    fileWriter, err := bodyWriter.CreateFormFile(paramFile.Key, paramFile.FileName)
    if err != nil {
        return nil, err
    }
    fileWriter.Write(paramFile.Content)

    // Set content type
    contentType := bodyWriter.FormDataContentType()

    // Close the writer
    bodyWriter.Close()

    resp, err := http.Post(url, contentType, bodyBuf)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()

    // Handle response status
    if resp.StatusCode = 300 {
        b, _ := ioutil.ReadAll(resp.Body)
        return nil, fmt.Errorf("[%d %s]%s", resp.StatusCode, resp.Status, string(b))
    }

    // Read response data
    respData, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return nil, err
    }

    return respData, nil
}

// Define FileItem type to represent file parameters
type FileItem struct {
    Key       string // e.g. "image_content"
    FileName  string // e.g. "test.jpg"
    Content   []byte // Byte array of the file
}

이 업데이트된 코드는 멀티파트 작성기와 함께 멀티파트/양식 데이터 콘텐츠 유형을 사용하여 POST 요청을 올바르게 구성합니다. 성공적인 요청을 수행하려면 API URL, 매개변수 텍스트 맵 및 파일 항목을 NewPostFile 함수에 제공할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3