मैं एक वेबसर्वर से एक फ़ाइल डाउनलोड करने की कोशिश कर रहा हूं और इसे मूल फ़ाइल नाम के तहत सहेज रहा हूं जो सर्वर फ़ाइल के साथ भेज रहा है। काम बहुत अच्छी तरह से डाउनलोड कर रहा है, लेकिन मैं असली फ़ाइल नाम प्राप्त करने में सक्षम नहीं हूं।http डाउनलोड फ़ाइल से फ़ाइल नाम पुनर्प्राप्त करें
असली उदाहरण के लिए मैं this file (फॉक्सिट पीडीएफ रीडर) डाउनलोड करने की कोशिश कर रहा हूं।
यदि मैं क्रोम जैसे ब्राउज़र में इस लिंक का उपयोग कर रहा हूं तो ब्राउज़र संस्करण आदि सहित सटीक नाम के साथ फ़ाइल डाउनलोड करता है। मुझे यह नाम कहां से मिलता है? मैंने हेडर सूचनाओं को पढ़ने की कोशिश की और Content-Disposition
खोज रहा था लेकिन सर्वर यह जानकारी नहीं भेजता है। मुझे सटीक फ़ाइल नाम कहां से मिलता है?
try {
URL webfile = new URL("http://www.foxitsoftware.com/downloads/latest.php?product=Foxit-Reader");
URLConnection con = webfile.openConnection();
Map map = con.getHeaderFields();
Set set = map.entrySet();
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
} catch (IOException ex) {
System.out.println("Error: "+ex.getMessage());
}
आप उत्पादन में देख सकते हैं कोई Content-Disposition
:
null=[HTTP/1.1 200 OK]
ETag=["244005-f36d40-4d003f3868000"]
Date=[Sat, 08 Dec 2012 12:29:02 GMT]
Content-Length=[15953216]
Last-Modified=[Tue, 04 Dec 2012 10:01:36 GMT]
Content-Type=[application/x-msdos-program]
Connection=[close]
Accept-Ranges=[bytes]
Server=[Apache/2.2.16 (Debian)]
तो मैं कैसे सटीक फ़ाइल नाम प्राप्त कर सकते हैं
मैं कुछ इस तरह की कोशिश की? ब्राउज़र में लिंक FoxitReader544.11281_enu_Setup.exe
नाम वाली फ़ाइल डाउनलोड करता है।
कोई विचार ?!
वाह! मैंने अनुमान लगाया कि 'HTTP/1.1 200 ओके' जानकारी के कारण जीईटी ठीक था ?! अगर मुझे 302 मिलना चाहिए तो मुझे 200 क्यों मिलेगा ?! पैरामीटर सेट होने पर – Marco
यह स्वचालित रूप से रीडायरेक्ट का पालन करता है। देखें [** 'getFollowRedirects()' **] (http://docs.oracle.com/javase/1.5.0/docs/api/java/net/HttpURLConnection.html#getFollowRedirects()) और [** ' setFollowRedirects() '**] (http://docs.oracle.com/javase/1.5.0/docs/api/java/net/HttpURLConnection.html#setFollowRedirects (बूलियन)) –
अच्छा! आपका बहुत बहुत धन्यवाद! स्वीकार करने के लिए 2 और मिनट इंतजार करने की आवश्यकता है ...;) – Marco