2012-01-11 15 views
5

इस स्थिति में, मैंने खोज परिणाम फ़ाइलों वाली एक ज़िप फ़ाइल बनाई है, और मैं इसे उपयोगकर्ता को भेजने की कोशिश कर रहा हूं। यहां कोड का हिस्सा है जिसे मैं वर्तमान में उपयोग करने का प्रयास कर रहा हूं।प्रतिक्रिया आउटपुट स्ट्रीम के माध्यम से मैं ब्राउज़र में ज़िप फ़ाइल कैसे वापस कर सकता हूं?

File[] zippable = new File[files.size()]; 
File resultFile = ZipCreator.zip(files.toArray(zippable), results); 
InputStream result = new FileInputStream(resultFile); 
IOUtils.copy(result, response.getOutputStream()); 

हालांकि, यह वर्तमान में काफी सही काम नहीं करता है। मैंने जो ज़िप फ़ाइल बनाई है उसे वापस करने के बजाय, यह एक HTML फ़ाइल देता है। यदि मैं मैन्युअल रूप से फ़ाइल एक्सटेंशन को मैन्युअल रूप से बदलता हूं, तो मैं देख सकता हूं कि फ़ाइल की सामग्री अभी भी खोज परिणामों की आवश्यकता है। तो समस्या सिर्फ प्रतिक्रिया के उचित विस्तार को वापस करने में निहित है।

क्या किसी को इस स्थिति के लिए कोई सलाह है?

उत्तर

6

आपको प्रतिक्रिया शीर्षलेख को application/zip (या application/octet-stream, लक्ष्य ब्राउज़र के आधार पर) सेट करने की आवश्यकता है। इसके अतिरिक्त, आप अनुलग्नक स्थिति और फ़ाइल नाम इंगित करने वाले अतिरिक्त प्रतिक्रिया शीर्षलेख भेजना चाह सकते हैं।

+0

मुझे लगता है कि मैं आपको यहां गलत व्याख्या कर सकता हूं। मैंने कोड में एक पंक्ति जोड़ दी है, इसलिए अब यह 'response.setHeader ("सामग्री-प्रकार", "एप्लिकेशन/ज़िप") पढ़ता है; ' फिर भी कोई सफलता नहीं है। यह कॉल IOUtils.copy पर कॉल करने से ठीक पहले किया जा रहा है। – Bennie

+0

@ बेनी: अच्छा लग रहा है, लेकिन फिर, ज़िप फ़ाइल के लिए उपयोग करने के लिए "दाएं" एमआईएम प्रकार के बारे में कुछ भ्रम है, इसलिए आप उन मानों के साथ खेलना चाहेंगे । – maerics

+0

ठीक है, ऐसा लगता है कि यह फ़ाइल को वापस करने के लिए कम से कम काम कर रहा है। हालांकि यह एक अजीब चीज कर रहा है, जहां फ़ाइल को "exportZipSearchResults.htm.zip" कहा जाता है। क्या प्रतिक्रिया पर फ़ाइल नाम बदलने का एक अंतर्निहित तरीका है? – Bennie

1

परिणामों को स्ट्रीम करने से पहले आपको सामग्री प्रकार शीर्षलेख application/octet-stream पर सेट करने की आवश्यकता है। response के कार्यान्वयन पर निर्भर करता है कि आप वास्तव में यह कैसे करते हैं इसका उपयोग कर रहे हैं।

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

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