النشر باستخدام "نوع المحتوى: بيانات متعددة الأجزاء/النموذج"
عند محاولة إرسال طلب POST باستخدام "نوع المحتوى: multipart/form-data"، قد تواجه رسالة خطأ مثل "[301 301 تم نقله بشكل دائم]." تحدث هذه المشكلة عادةً عند محاولة نشر معلمات البايت ووسائط السلسلة إلى واجهة برمجة التطبيقات.
لحل هذا الخطأ وتنفيذ طلب POST بنجاح باستخدام بيانات متعددة الأجزاء/النموذج، يمكنك تعديل كود 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
}
يستخدم هذا الكود المحدث نوع محتوى متعدد الأجزاء/بيانات النموذج مع كاتب متعدد الأجزاء لإنشاء طلب POST بشكل صحيح. يمكنك توفير عنوان URL الخاص بواجهة برمجة التطبيقات (API)، وخريطة نص المعلمة، وعنصر الملف إلى وظيفة NewPostFile لتنفيذ طلب ناجح.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3