"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية حل الخطأ \"[301 301 تم نقله إلى الأبد]\" عند النشر باستخدام \"نوع المحتوى: بيانات متعددة الأجزاء/النموذج\" في Go؟

كيفية حل الخطأ \"[301 301 تم نقله إلى الأبد]\" عند النشر باستخدام \"نوع المحتوى: بيانات متعددة الأجزاء/النموذج\" في Go؟

تم النشر بتاريخ 2024-11-10
تصفح:657

How to Resolve \

النشر باستخدام "نوع المحتوى: بيانات متعددة الأجزاء/النموذج"

عند محاولة إرسال طلب 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