के रूप में पोस्ट किया जाता है, मैं सर्वर पर एक फ़ाइल अपलोड कर रहा हूं। फ़ाइल अपलोड HTML फॉर्म में 2 फ़ील्ड हैं:यूटीएफ -8 टेक्स्ट को गड़बड़ कर दिया जाता है जब फॉर्म मल्टीपार्ट/फॉर्म-डेटा
- फ़ाइल का नाम - एक HTML टेक्स्ट बॉक्स जहां उपयोगकर्ता किसी भी भाषा में नाम दे सकता है।
- फ़ाइल अपलोड - एक HTMl 'फ़ाइल' जहां उपयोगकर्ता डिस्क से फ़ाइल को अपलोड करने के लिए निर्दिष्ट कर सकता है।
जब फॉर्म सबमिट किया गया है, तो फ़ाइल सामग्री ठीक से प्राप्त की जाती है। हालांकि, जब फ़ाइल का नाम (ऊपर बिंदु 1) पढ़ा जाता है, तो यह खराब होता है। ASCII वर्ण ठीक से प्रदर्शित होते हैं। जब नाम किसी अन्य भाषा (जर्मन, फ्रेंच इत्यादि) में दिया जाता है, तो समस्याएं होती हैं।
सर्वलेट विधि में, अनुरोध का वर्ण एन्कोडिंग यूटीएफ -8 पर सेट है। मैंने उल्लेख किए गए फ़िल्टर को करने का भी प्रयास किया - How can I make this code to submit a UTF-8 form textarea with jQuery/Ajax work? - लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है। केवल फ़ाइल नाम को खराब किया जाना प्रतीत होता है।
MySQL तालिका जहां फ़ाइल नाम यूटीएफ -8 का समर्थन करता है। मैंने यादृच्छिक गैर-अंग्रेज़ी वर्ण & दिया है, वे ठीक से संग्रहीत/प्रदर्शित होते हैं।
फिडलर का उपयोग करके, मैंने & अनुरोध पर नजर रखी सभी पोस्ट डेटा सही ढंग से पारित हो गए हैं। मैं यह पहचानने की कोशिश कर रहा हूं कि डेटा कैसे/कहाँ गड़बड़ हो सकता है। किसी भी प्रकार की सहायता सराहनीय होगी।
मुझे http://stackoverflow.com/questions/2422468/how-to-upload-files-to-server-using-jsp-servlet/2424824#2424824 - से विशिष्ट होने के लिए लाभ हुआ, यह '@ MultipartConfig' समाधान जो मेरे लिए काम करता है (मुझे 'नई स्ट्रिंग (.... getBytes (...), ...) के अलावा' इसके अलावा) की आवश्यकता है। दुर्भाग्यवश यहां सूचीबद्ध अन्य समाधान अकेले मेरे लिए काम नहीं करते:/ – Vin