Maison > Article > développement back-end > Comment résoudre l'erreur \'[301 301 Moved Permanently]\' lors de la publication avec \'Content-Type: multipart/form-data\' dans Go ?
Publication avec « Content-Type : multipart/form-data »
Lors de la tentative d'envoi d'une requête POST avec « Content-Type : multipart/form-data", vous pouvez rencontrer un message d'erreur du type "[301 301 Moved Permanently]." Ce problème se produit généralement lorsque vous essayez de POST des paramètres d'octet et des arguments de chaîne vers une API.
Pour résoudre cette erreur et exécuter avec succès une requête POST avec multipart/form-data, vous pouvez modifier votre code Go comme suit :
<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>
Ce code mis à jour utilise un type de contenu multipart/form-data avec un rédacteur multipart pour construire correctement la requête POST. Vous pouvez fournir l'URL de votre API, la carte de texte des paramètres et l'élément de fichier à la fonction NewPostFile pour effectuer une requête réussie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!