"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحليل الملفات وبيانات JSON من طلب HTTP في Golang؟

كيفية تحليل الملفات وبيانات JSON من طلب HTTP في Golang؟

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

How to Parse Files and JSON Data from an HTTP Request in Golang?

تحليل الملفات وبيانات JSON من طلب HTTP في Go

في تطبيق الويب، من الشائع تلقي كل من الملفات وبيانات JSON في طلب HTTP. لمعالجة هذه العناصر بنجاح، من الضروري فهم كيفية تحليلها بشكل فعال.

المشكلة

فكر في سيناريو حيث يكون لديك واجهة أمامية AngularJS ترسل طلبًا إلى واجهة Go الخلفية. يحتوي الطلب على ملف ("ملف") وبيانات JSON ("doc"). هدفك هو تحليل كل من ملف PDF وبيانات JSON من هذا الطلب.

الحل

لحل هذه المشكلة، تحتاج إلى معالجة كل من الملف وبيانات JSON بشكل منفصل. من خلال استخدام http.(*Request).MultipartReader() والتكرار على الأجزاء باستخدام NextPart()، يمكنك استخراج كل عنصر وتحليله.

الخطوة 1: إنشاء قارئ متعدد الأجزاء

mr, err := r.MultipartReader()
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}

الخطوة 2: معالجة كل جزء

لكل جزء في الطلب متعدد الأجزاء:

part, err := mr.NextPart()
if err == io.EOF {
    break
}
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}

الخطوة 3: استخراج بيانات الملف

إذا كان الجزء عبارة عن ملف (part.FormName() == "file"):

outfile, err := os.Create("./docs/"   part.FileName())
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}
defer outfile.Close()

_, err = io.Copy(outfile, part)
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}
الخطوة 4: تحليل بيانات JSON

إذا كان الجزء يحتوي على بيانات JSON (part.FormName() == "doc"):

jsonDecoder := json.NewDecoder(part)
err = jsonDecoder.Decode(&doc)
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}
الخطوة 5: المعالجة اللاحقة

بعد تحليل كل من الملف وبيانات JSON، يمكنك إجراء أي معالجة لاحقة ضرورية، مثل حفظه في قاعدة بيانات أو إرسال رد إلى العميل .

بيان الافراج أعيد طبع هذه المقالة على: 1729747542 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3