في تطبيق الويب، من الشائع تلقي كل من الملفات وبيانات JSON في طلب HTTP. لمعالجة هذه العناصر بنجاح، من الضروري فهم كيفية تحليلها بشكل فعال.
فكر في سيناريو حيث يكون لديك واجهة أمامية AngularJS ترسل طلبًا إلى واجهة Go الخلفية. يحتوي الطلب على ملف ("ملف") وبيانات JSON ("doc"). هدفك هو تحليل كل من ملف PDF وبيانات JSON من هذا الطلب.
لحل هذه المشكلة، تحتاج إلى معالجة كل من الملف وبيانات JSON بشكل منفصل. من خلال استخدام http.(*Request).MultipartReader() والتكرار على الأجزاء باستخدام NextPart()، يمكنك استخراج كل عنصر وتحليله.
mr, err := r.MultipartReader()
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
لكل جزء في الطلب متعدد الأجزاء:
part, err := mr.NextPart()
if err == io.EOF {
break
}
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
إذا كان الجزء عبارة عن ملف (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: المعالجة اللاحقةتنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3