2011-06-21 3 views
5

मैं एक GWT परियोजना (वेब ​​अनुप्रयोग) पर काम कर रहा हूँ:GWT: fileUpload.getFileName() & fakepath

कुछ बिंदु पर

, उपयोगकर्ताओं को एक FormPanel के माध्यम से आवेदन के माध्यम से एक फ़ाइल अपलोड कर सकते हैं।

मैं फ़ाइल नाम की जरूरत के रूप में, मैंने सोचा कि मैं इस्तेमाल कर सकते हैं:

FileUpload upload = new FileUpload(); 
    // ... 
    String name = upload.getFileName(); 

और name पता चला है कुछ इस तरह होना करने के लिए: C:\fakepath\whatever.txt

क्या यह क्रॉस-प्लेटफ़ॉर्म है? अन्य ओएस पर क्या होता है (मैं विंडोज का उपयोग कर रहा हूं)?

उत्तर

5

अपलोड फॉर्म द्वारा लौटाया गया नाम ब्राउज़र की सुरक्षा सेटिंग्स पर निर्भर है।

विंडोज़ पर, सी: \ fakepath का उपयोग अस्पष्ट करने के लिए किया जाता है जहां फ़ाइल वास्तव में स्थित है। फ़ाइल नाम, हालांकि, हमेशा रखा जाता है।

अन्य ओएस पर भी ऐसा ही हो सकता है, यह सी: \ fakepath नहीं होगा (उदाहरण के लिए लिनक्स वापस लौटा सकता है, 100% निश्चित नहीं है)।

मैं वर्तमान में FileUpload का उपयोग कर एक जीडब्ल्यूटी-आधारित सिस्टम पर भी काम कर रहा हूं; और फ़ाइल नाम किसी भी इस्तेमाल किए गए क्लाइंट ओएस (केवल अलग-अलग (नकली) पथों पर गलत नहीं है)। इसका इस्तेमाल विंडोज, उबंटू और ओएस/एक्स पर किया गया था। आपको अंतिम "/" या "\" को अलग करके सही फ़ाइल नाम सुरक्षित रूप से प्राप्त करने में सक्षम होना चाहिए (ध्यान दें कि प्रति ओएस अलग है), या उसके लिए getFileName विधि का उपयोग करें :)।

+3

'सी: \ fakepath' उपसर्ग [" एचटीएमएल 5 में "द्वारा" [http://www.w3.org/TR/html5/number-state.html#file-upload-state) है। सभी ओएसई पर, सभी ब्राउज़रों की अपेक्षा करें, जल्द ही अपने व्यवहार को अपडेट करने के लिए। एचटीएमएल 5 spec से 'extractFilename' जावास्क्रिप्ट फ़ंक्शन जावा पर पोर्ट करना आसान है। –

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