Beitrag mit „Content-Type: multipart/form-data“
Beim Versuch, eine POST-Anfrage mit „Content-Type:“ zu senden multipart/form-data“ erhalten Sie möglicherweise eine Fehlermeldung wie „[301 301 Permanent verschoben].“ Dieses Problem tritt normalerweise auf, wenn Sie versuchen, Byte-Parameter und String-Argumente per POST an eine API zu senden.
Um diesen Fehler zu beheben und eine POST-Anfrage mit Multipart-/Formulardaten erfolgreich durchzuführen, können Sie Ihren Go-Code wie folgt ändern:
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
}
Dieser aktualisierte Code verwendet einen Multipart-/Formulardaten-Inhaltstyp mit einem Multipart-Writer, um die POST-Anfrage korrekt zu erstellen. Sie können der NewPostFile-Funktion Ihre API-URL, Parametertextzuordnung und Dateielement bereitstellen, um eine erfolgreiche Anfrage auszuführen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3