2010-10-10 17 views
20

का उपयोग कर एक फ़ाइल लौटें मैं एक आरईएसटी सेवा लागू करने के लिए जावा जर्सी का उपयोग कर रहा हूं। मेरी सेवा प्रदान करने वाली एक चीज़ एक फ़ाइल डाउनलोड विकल्प है। ये फ़ाइलें काफी बड़ी हैं और डीबी से डेटा से निर्मित हैं।जावा जर्सी

वर्तमान में मैं db से सभी डेटा प्राप्त करने में और एक फ़ाइल में सहेजकर और लौट रहा एक

Response.ok().entity(new FileInputStream(file)).build(); 

वहाँ एक रास्ता कैसे मैं पूरी तरह से db से डेटा डाउनलोड के बिना फ़ाइल प्रदर्शन आरंभ हो सकता है, लेकिन चूंकि डेटा डीबी से आता है, इसे आउटपुट स्ट्रीम में जोड़ता है?

+0

http://stackoverflow.com/questions/3496209/input-and-output-binary-streams-using-jersey देखें, यह एक उत्तर है जो इसके लिए भी उपयोगी है। – centic

उत्तर

0

तो क्या आप अपने डेटाबेस से स्ट्रीम प्राप्त करना चाहते हैं?

मुझे यकीन नहीं है कि यह भी संभव है।

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

+0

हां, मुझे नया इनपुटस्ट्रीम (नया MyDBWrapper()) जहां MyDBWrapper डेटा लाने और बनाने के लिए कुछ करना चाहता है। मुझे यकीन नहीं है कि मैं ByteInputStream का उपयोग कर सकता हूं क्योंकि डेटा काफी बड़ा है - 1 जीबी अधिक प्राप्त कर सकता है। – digy

0

अंतर्निहित डेटाबेस कनेक्शन/ड्राइवर के प्रकार पर निर्भर करता है, यदि आपके पास जेडीबीसी परत (उदाहरण के लिए हाइबरनेट का उपयोग करना) तक पहुंच है तो जेडीबीसी स्ट्रीमिंग एपीआई का उपयोग करके डेटा स्ट्रीम करना संभव होना चाहिए, फिर परिणाम को स्ट्रीमसेट से पास करें और पास करें उन्हें जर्सी के प्रतिक्रिया बिल्डर में। मैं नहीं इस अपने आप को हालांकि किया है ..

जांच यहाँ:

7
से जवाब का उपयोग करके समस्या हल

कैसे

File fileToSend = getFile(); 
return Response.ok(fileToSend, "application/zip").build(); 

मीडिया प्रकार को भेजा जा रहा फ़ाइल से मेल खाने के लिए सेट किया जा सकता है।

यह बहुत सीधे आगे दिखता है लेकिन अधिक महत्वपूर्ण बात यह है कि जावा विशेषज्ञों को यह पढ़कर समाधान के साथ एक प्रदर्शन समस्या दिखाई देती है?

+0

क्या आप वास्तव में यह कोशिश करते थे? मैं उम्मीद करता हूं कि यह फाइल-नाम को स्ट्रिंग के रूप में वापस कर देगा, फाइल की सामग्री नहीं ... – centic

+0

हाँ यह मेरे लिए काम करता है। – nishantkyal

+0

यह मेरे लिए नहीं था, यह वास्तव में फ़ाइल नाम लौटा दिया। –

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