2010-02-15 13 views
26

मैं एक वेब सर्वर मॉड्यूल में मल्टीपार्ट फॉर्म-डेटा पार्सिंग को एकीकृत करने के लिए देख रहा हूं ताकि मैं बैकएंड वेब एप्लिकेशन (अक्सर डायनामिक भाषाओं में लिखे गए) को मल्टीपार्ट डेटा को पार्स करने से मुक्त कर सकूं। मल्टीपार्ट व्याकरण (आरएफसी 2046) गैर-तुच्छ दिखता है और यदि मैं इसे हाथ से कार्यान्वित करता हूं तो बहुत सी चीजें गलत हो सकती हैं। क्या सी या सी ++ में पहले से ही एक अच्छा, हल्का मल्टीपार्ट/फॉर्म-डेटा पार्सर लिखा गया है? मैं सी या सी ++ मानक पुस्तकालय के अलावा बाहरी निर्भरताओं के साथ एक की तलाश में हूं। मुझे ईमेल अनुलग्नक हैंडलिंग या buffered I/O कक्षाओं या पोर्टेबिलिटी रनटाइम या जो भी हो, बस मल्टीपार्ट/फॉर्म-डेटा पार्सिंग की आवश्यकता नहीं है।क्या सी या सी ++ में हल्का मल्टीपार्ट/फॉर्म-डेटा पार्सर है?

चीज़ें है कि मैं पर विचार किया है:

  • GMime - चिकना, इसलिए कोई जाने पर निर्भर करता है।
  • libapreq - बहुत बड़ा, एपीआर पर निर्भर करता है, बुरी तरह से प्रलेखित, कोई यूनिट परीक्षण नहीं।

मैंने रागेल के साथ एक पार्सर लिखने पर भी ध्यान दिया है, लेकिन मुझे यह नहीं पता कि यह कैसे करना है क्योंकि व्याकरण स्थिर नहीं है: सीमा मनमाने ढंग से बदल सकती है।

+0

"। GMime - चिकना, इसलिए कोई जाने पर निर्भर करता है" - समझाने की देखभाल क्यों? –

+4

क्या आपने यह धागा पढ़ा है: http://stackoverflow.com/questions/218089/simple-c-mime-parser? – Manuel

+1

@ जॉन: प्रत्येक नई निर्भरता मेरे उपयोगकर्ताओं के लिए इंस्टॉलेशन परेशानी जोड़ती है, और मैं इसे न्यूनतम से बचाना चाहता हूं। कई सर्वरों में ग्लिब स्थापित नहीं होता है। इसके अलावा हर नई निर्भरता संसाधन उपयोग को बढ़ाती है। ग्लिब का उपयोग करने वाले कई सर्वर ऐप्स नहीं हैं, इसलिए यदि मैं ग्लिब पर निर्भर करता हूं तो मैं इसे कुछ मेम डेटा को पार्स करने के लिए अपनी सभी मेमोरी खपत खींच दूंगा। – Hongli

उत्तर

1

mimetic इसका समर्थन करने का दावा करता है। मुझे लगता है कि जीएनयू cgicc इसका भी समर्थन कर सकता है।

1

cgicc इसका समर्थन करता है ... लेकिन स्मृति में प्रवेश बफर पर काफी बुरी तरह लिखा गया है और रिले है।

-4

यह आपके प्रश्न का सीधे उत्तर नहीं दे सकता है, लेकिन क्या आपने फेसबुक से PHP के लिए हिप्पोप पर विचार किया?

यह आपके PHP कोड को C++ में परिवर्तित करता है और फिर g ++ के साथ संकलित करता है।

आपको अपने आप में कुछ लिखने में समय बचा सकता है।

5

हां, वहां एक। कोई रहस्य नहीं है यह मेरा है। इसका इस्तेमाल करने के लिए स्वतंत्र महसूस करें। लिंक है: MPFDParser। इसकी कोई निर्भरता नहीं है।

9

मैं जानता हूँ कि इस सवाल का अब पुराने कुछ साल है, लेकिन मैं एक ही जरूरत है और इस का उपयोग कर समाप्त हो गया:

https://github.com/iafonov/multipart-parser-c

+0

हालांकि निश्चित रूप से मुद्दों की जांच करें! जैसे सीमा अवधि पहले से ही "-" के साथ prefixed किया जाना चाहिए, या नहीं यह काम नहीं करेगा। –