Menyiarkan dengan "Content-Type: multipart/form-data"
Apabila cuba menghantar permintaan POST dengan "Content-Type: multipart/form-data," anda mungkin menghadapi mesej ralat seperti "[301 301 Moved Permanently]." Isu ini biasanya berlaku apabila anda cuba POST parameter bait dan argumen rentetan ke API.
Untuk menyelesaikan ralat ini dan berjaya melaksanakan permintaan POST dengan data berbilang bahagian/bentuk, anda boleh mengubah suai kod Go anda seperti berikut:
<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>
Kod dikemas kini ini menggunakan jenis kandungan berbilang bahagian/data bentuk dengan penulis berbilang bahagian untuk membina permintaan POST dengan betul. Anda boleh memberikan URL API anda, peta teks parameter dan item fail kepada fungsi NewPostFile untuk melaksanakan permintaan yang berjaya.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'[301 301 Dipindahkan Secara Kekal]\' Semasa Menyiarkan dengan \'Content-Type: multipart/form-data\' dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!