2013-10-03 9 views
7

मैं जर्सी के साथ एक फ़ाइल अपलोड कर रहा हूं, लेकिन मुझे केवल फ़ाइल नाम की आवश्यकता है। इंटरनेट एक्सप्लोरर पूरे पथ को भेजता है, और फॉर्मडाटाकंटेंट डिस्पोजिशन में जो कुछ भी है, उसके आधार पर, जर्सी स्लेश से बाहर निकलता है, इसलिए मैं इसे भी पार्स नहीं कर सकता। धन्यवाद।जर्सी फ़ाइल अपलोड के साथ केवल फ़ाइल नाम कैसे प्राप्त करें

उत्तर

2

एक कठिन समस्या की तरह लगता है। पाठ्यक्रम का आदर्श मामला स्लैश युक्त स्ट्रिंग को पकड़ना है और बस string.split का उपयोग करना है!

यह विफल होने के बाद, एकमात्र रणनीति जिसे मैं सोचना शुरू कर सकता हूं, स्ट्रिंग के माध्यम से पुन: प्रयास करने का प्रयास करना है, यदि स्ट्रिंग इत्यादि के पहले भाग की विभिन्न लंबाई के लिए फ़ोल्डर्स मौजूद हैं। इससे समस्याएं हो सकती हैं, भले ही आप ढूंढना चाहते हैं एक फ़ोल्डर "माईफोल्डर (2)" और एक "माईफोल्डर" भी है। मैं जर्सी के बारे में बहुत कुछ नहीं जानता लेकिन मैं आपको आवश्यक स्ट्रिंग को पकड़ने के लिए एक अलग तरीका खोजने की कोशिश करता हूं।

+3

धन्यवाद।मैं जो कर रहा हूं वह फ़ाइल इनपुट टैग में एक परिवर्तन ईवेंट जोड़ रहा था और इसमें फ़ाइल नाम को पार्स कर दिया गया क्योंकि यह अभी भी इस बिंदु पर स्लेश हो गया है, और उस मान को छिपे हुए इनपुट में चिपकाएं। वह छिपी हुई इनपुट तब शेष रूप के साथ जमा हो जाती है। – kombat

+0

देखकर खुशी हुई कि आप इसे हल करने में सक्षम थे। – Drifter64

+1

इसे इस टिप्पणी में डालने के बजाए इस प्रश्न का उत्तर दें, ताकि यह अधिक लागू हो सके –

1
  1. फ़ाइल इनपुट टैग
  2. में होने वाले बदलाव घटना जोड़ें फ़ाइल नाम बाहर पार्स के रूप में यह अभी भी इस बिंदु
  3. स्टिक पर स्लैश है कि तब एक छिपा इनपुट

कि छिपा इनपुट में महत्व है शेष रूप के साथ जमा हो जाता है।


@kombat को यह समाधान मिला है और इसे एक टिप्पणी के रूप में पोस्ट किया गया है। बेहतर के लिए यह अब एक समुदाय विकी उत्तर के रूप में reposted है।

0

जब मैंने ग्रहण ब्राउज़र की कोशिश की तो मुझे वह त्रुटि मिल रही थी। जब मैंने क्रोम पर अपना कोड आज़माया, तो FormDataContentDisposition.getFileName() ठीक था।

0

यह जर्सी में एक बग है। नाबल चर्चा में http://jersey.576304.n2.nabble.com/Jersey-truncating-the-slashes-from-the-uploaded-file-name-td5984041.html बग के लेखक ने स्वयं को प्रकट किया और Content-Disposition को पार्स करने के लिए HTTP शीर्षलेखों को पार्स करने के लिए 'कोड का पुन: उपयोग' स्वीकार किया। हालांकि, उद्धृत आरएफसी 2616 निर्दिष्ट नहीं करता है कि Content-Disposition फ़ील्ड HTTP शीर्षलेखों के लिए निर्दिष्ट नियमों के अनुसार बचने के लिए हैं। बस विपरीत, वहाँ लिखा है कि:

सामग्री-विन्यास HTTP मानक का हिस्सा नहीं है, लेकिन चूंकि यह व्यापक रूप से लागू किया गया है, हम कार्यान्वयन करने के लिए इसके उपयोग और जोखिम का दस्तावेजीकरण कर रहे हैं।

इस बग पहले से ही जर्सी की वास्तविक संस्करण में वर्ग org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide में एक बदसूरत वैकल्पिक हल है, लेकिन यह IE 11 और एज के साथ काम नहीं करता है, क्योंकि यह जाँच करता है उपयोगकर्ता-एजेंट हिस्सा जो बदल गया है। फिक्स के साथ एक पुल अनुरोध है: https://github.com/jersey/jersey/pull/233/files, लेकिन लगभग 2 वर्षों तक किसी ने इसे विलय करने की परवाह नहीं की है।

1) aplly एक ग्राहक के पक्ष, जो IMHO एक गलत दृष्टिकोण है, क्योंकि वहाँ क्लाइंट की तरफ कोई बग है पर 'फिक्स', बग जर्सी में है:

आप 3 समाधान है!

2) जर्सी अन्य ढांचा, जिसमें डेवलपर मैन्युअल कोड पुनः प्रयोग आदि

3) पैच जर्सी अधिकतम पर ध्यान केंद्रित करने के बजाय और अधिक गंभीरता से संगतता समस्याओं लेने के लिए बदलें। स्रोत डाउनलोड करें, संशोधित संस्करण संख्या के साथ पुल अनुरोध लागू करें, संकलित करें और रिलीज़ करें।

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