एक वेब एप्लिकेशन में, HTTP अनुरोध में फ़ाइलें और JSON डेटा दोनों प्राप्त करना आम बात है। इन तत्वों को सफलतापूर्वक संसाधित करने के लिए, यह समझना आवश्यक है कि उन्हें प्रभावी ढंग से कैसे पार्स किया जाए। अनुरोध में एक फ़ाइल ("फ़ाइल") और JSON डेटा ("doc") शामिल है। आपका लक्ष्य इस अनुरोध से पीडीएफ फ़ाइल और 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()
अगर गलती == io.EOF {
तोड़ना
}
यदि त्रुटि !=शून्य {
http.Error(w, err.Error(), http.StatusInternalServerError)
वापस करना
}चरण 3: फ़ाइल डेटा निकालेंpart, err := mr.NextPart()
if err == io.EOF {
break
}
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
आउटफ़ाइल, त्रुटि := os.Create(./docs/" भाग.फ़ाइलनाम())
यदि त्रुटि !=शून्य {
http.Error(w, err.Error(), http.StatusInternalServerError)
वापस करना
}
आउटफ़ाइल को स्थगित करें। बंद करें()
_, त्रुटि = io.कॉपी(आउटफ़ाइल, भाग)
यदि त्रुटि !=शून्य {
http.Error(w, err.Error(), http.StatusInternalServerError)
वापस करना
}चरण 4: JSON डेटा को पार्स करें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
}
jsonDecoder := json.NewDecoder(भाग)
त्रुटि = jsonDecoder.Decode(&doc)
यदि त्रुटि !=शून्य {
http.Error(w, err.Error(), http.StatusInternalServerError)
वापस करना
}चरण 5: पोस्ट-प्रोसेसिंगjsonDecoder := json.NewDecoder(part)
err = jsonDecoder.Decode(&doc)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3