«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как устранить ошибку «[301 301 перемещено навсегда]» при публикации с типом контента: multipart/form-data в Go?

Как устранить ошибку «[301 301 перемещено навсегда]» при публикации с типом контента: multipart/form-data в Go?

Опубликовано 10 ноября 2024 г.
Просматривать:677

How to Resolve \

Публикация с «Content-Type: multipart/form-data»

При попытке отправить POST-запрос с «Content-Type: multipart/form-data», вы можете столкнуться с сообщением об ошибке типа «[301 301 Moved Permanently]». Эта проблема обычно возникает при попытке отправить байтовые параметры и строковые аргументы POST в API.

Чтобы устранить эту ошибку и успешно выполнить запрос POST с multipart/form-data, вы можете изменить свой код 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
}

Этот обновленный код использует тип контента multipart/form-data с составным модулем записи для правильного построения запроса POST. Вы можете предоставить URL-адрес API, текстовую карту параметров и элемент файла функции NewPostFile для выполнения успешного запроса.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3