2016-01-14 4 views
6

मैं एक साधारण HTML फार्म है:वर्ण एन्कोडिंग अपलोड

<form action="/file/import" method="POST" enctype="multipart/form-data"> 
    <input id="csvFile" type="file" name="file"> 
</form> 

मैं अलग किए गए वर्णसेट के साथ सहेजा CSV फ़ाइलों को अपलोड के साथ एक समस्या है। क्या ब्राउज़र को किसी भी फ़ाइल को यूटीएफ -8 में कनवर्ट करना संभव है और इसे सर्वर पर इस तरह भेजना संभव है?

मैं कई विकल्प की कोशिश की और ngrep साथ ब्राउज़र द्वारा भेजा गया डेटा पर नज़र रखी, मूल रूप से ISO-8859-2 में सहेजा एक फ़ाइल अपलोड करने के बाद: -> के लिए कुछ इस

  1. multipart/form-data; charset=utf-8 करने के लिए enctype स्थापना कारणस्वरूप ब्राउज़र Content-Type: application/x-www-form-urlencoded भेज रहा था - जैसे यह मेरे निर्दिष्ट enctype का उपयोग करने में विफल रहा।

  2. form में एक विशेषता टैग जोड़ें: accept-charset="UTF-8" -> कोई प्रभाव नहीं।

  3. में <meta charset="UTF-8"> का उपयोग -> कोई प्रभाव नहीं।

मुझे लगता है कि फ़ाइल अपलोड इस तरह काम करना चाहिए। मैं नहीं चाहता कि मेरा सर्वर अलग-अलग एन्कोडिंग के बारे में परवाह करे, बल्कि डेटा को स्टैंडराइज्ड तरीके से प्राप्त करें। लेकिन यदि यह संभव नहीं है, तो क्या मैं किसी भी तरह से ब्राउज़र से एन्कोडिंग के बारे में जानकारी भेज सकता हूं? मैं किसी भी सलाह की सराहना करता हूं, धन्यवाद।

उत्तर

0

आपको सामग्री (बाइट्स) और एन्कोडिंग (बाइट्स की व्याख्या) के बीच अंतर करना होगा। एचटीएमएल फ़ाइल अपलोड कार्यक्षमता केवल बाइट्स को स्थानांतरित करती है और व्याख्या की परवाह नहीं करती है क्योंकि यह टेक्स्ट फ़ाइलों तक ही सीमित नहीं है बल्कि बाइनरी को स्थानांतरित करने में भी सक्षम है। चूंकि आपके सर्वर को बाइट प्राप्त होता है, इसलिए इसे घुसपैठ को संभालना पड़ता है।

enctype=multipart/form-data; charset=utf-8 सिर्फ वर्णमाला के बारे में शीर्षलेख जानकारी जोड़ता है ताकि आपका सर्वर इसे संभाल सके। यह फ़ाइल अपलोड करने से पहले या बाद में किसी भी रूपांतरित करने को ट्रिगर करता है।

संबंधित मुद्दे