首页  >  文章  >  后端开发  >  如何解决 Go 中使用'Content-Type: multipart/form-data”发帖时出现'[301 301 永久移动]”错误?

如何解决 Go 中使用'Content-Type: multipart/form-data”发帖时出现'[301 301 永久移动]”错误?

Susan Sarandon
Susan Sarandon原创
2024-10-29 20:58:02254浏览

How to Resolve

使用“Content-Type: multipart/form-data”发布

尝试使用“Content-Type:”发送 POST 请求时multipart/form-data”,您可能会遇到类似“[301 301 Moved Permanently]”的错误消息。当您尝试将字节参数和字符串参数 POST 到 API 时,通常会出现此问题。

要解决此错误并成功使用 multipart/form-data 执行 POST 请求,您可以修改 Go 代码,如下所示:

<code class="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 < 200 || 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
}</code>

此更新的代码使用带有多部分编写器的 multipart/form-data 内容类型来正确构造 POST 请求。您可以向 NewPostFile 函数提供您的 API URL、参数文本映射和文件项以执行成功的请求。

以上是如何解决 Go 中使用'Content-Type: multipart/form-data”发帖时出现'[301 301 永久移动]”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn