2009-07-21 18 views
5

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

क्या FTP कनेक्शन स्ट्रिंग में पूर्ण पथ का उपयोग करने का कोई तरीका है? मैं अपनी फाइलों को "/ ftptransfers/..." जैसे कुछ में रखना चाहता हूं लेकिन एफ़टीपी पथ उपयोगकर्ता होम निर्देशिका से संबंधित है।

नमूना अपलोड कोड:

URL url = new URL("ftp://username:[email protected]/file.txt"); 
URLConnection uc = url.openConnection(); 
uc.setDoOutput(true); 
OutputStream out = uc.getOutputStream() ; 
out.write("THIS DATA WILL BE WRITTEN TO FILE".getBytes()); 
out.close(); 

उत्तर

5

मैं वास्तव में पता चला वहाँ यह है कि मेरे लिए काम किया करने के लिए एक अर्द्ध मानक तरीका है।

लघु जवाब: "% 2F" के साथ अग्रणी स्लैश की जगह

लांग जवाब: प्रति "A FTP URL Format" दस्तावेज़:

उदाहरण के लिए, URL "ftp://[email protected]/%2Fetc/motd" है FTP- द्वारा व्याख्या "host.dom" में प्रवेश करना, "myname" (पासवर्ड के लिए पूछे जाने पर पासवर्ड के लिए संकेत देना) के रूप में लॉग इन करना, और उसके बाद "सीडब्ल्यूडी/आदि" और फिर "आरईटीआर मोड" निष्पादित करना।

इसका "ftp://[email protected]/etc/motd" से भिन्न अर्थ है जो "सीडब्ल्यूडी आदि" और फिर "आरईटीआर मोटर" होगा; "myname" के लिए डिफ़ॉल्ट निर्देशिका के सापेक्ष प्रारंभिक "सीडब्ल्यूडी" निष्पादित किया जा सकता है।

दूसरी ओर, "ftp://[email protected]//etc/motd", होगा एक अशक्त तर्क के साथ "CWD", फिर "CWD आदि", और फिर "RETR motd"।

+0

भी (जब तक कि वह सीडी आदेश खुद को, जो मुझे लगता है कि वह कर सकता है लागू करने के लिए चाहता है) हालांकि यह मानक प्रक्रिया की तुलना में शोषण की तरह लगता है, मुझे यह वास्तव में उपयोगी समाधान मिला! मैं किसी भी बाहरी libs का उपयोग नहीं करना चाहता था, न ही sun.net.ftp सीधे। और apache commons एफ़टीपी क्लाइंट प्रॉक्सी का समर्थन नहीं करता है (सिस्टम गुणों के अलावा) और यह एक बाहरी lib है। समाधान के लिए धन्यवाद! –

+0

वास्तव में, यह स्टैंडअर्ट तरीका है। यह आरएफसी 1738 (http://datatracker.ietf.org/doc/rfc1738/) का पालन करता है जो अभी तक एफ़टीपी यूआरएल योजना के हिस्से में अप्रचलित नहीं है –

1

मुझे लगता है कि आपका सर्वश्रेष्ठ दांव Apache Commons एफ़टीपी घटक का उपयोग, और एक 'सीडी' करने के लिए आप कनेक्शन बनाने के बाद है।

आप हमेशा एक रैपर लिख सकते हैं ताकि यूआरएल उपरोक्त प्रारूप में निर्दिष्ट किया जा सके यदि आप चाहें तो।

-ace

+0

जितना ओपी एक बाहरी पुस्तकालय का उपयोग नहीं करना चाहता है, मुझे लगता है कि यह एक मामले में जहां इसके लिए कहा जाता है –

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