के साथ गतिशील फ़ाइल डाउनलोड करें मेरे पास एक GWT पृष्ठ है जहां उपयोगकर्ता डेटा दर्ज करें (प्रारंभ तिथि, समाप्ति दिनांक, आदि), तो यह डेटा आरपीसी कॉल के माध्यम से सर्वर पर जाता है। सर्वर पर मैं पीओआई के साथ एक्सेल रिपोर्ट जेनरेट करना चाहता हूं और उपयोगकर्ता को उस फाइल को अपनी स्थानीय मशीन पर सहेजने देना चाहता हूं।GWT
इस फ़ाइल में ग्राहक को वापस स्ट्रीम करने के लिए अपने परीक्षण कोड है, लेकिन किसी कारण से मुझे लगता है कि ग्राहक के लिए फ़ाइल स्ट्रीम करने के लिए कैसे जब मैं आरपीसी उपयोग कर रहा हूँ पता नहीं है:
public class ReportsServiceImpl extends RemoteServiceServlet implements ReportsService {
public String myMethod(String s) {
File f = new File("/excelTestFile.xls");
String filename = f.getName();
int length = 0;
try {
HttpServletResponse resp = getThreadLocalResponse();
ServletOutputStream op = resp.getOutputStream();
ServletContext context = getServletConfig().getServletContext();
resp.setContentType("application/octet-stream");
resp.setContentLength((int) f.length());
resp.setHeader("Content-Disposition", "attachment; filename*=\"utf-8''" + filename + "");
byte[] bbuf = new byte[1024];
DataInputStream in = new DataInputStream(new FileInputStream(f));
while ((in != null) && ((length = in.read(bbuf)) != -1)) {
op.write(bbuf, 0, length);
}
in.close();
op.flush();
op.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
return "Server says: " + filename;
}
}
मैंने इंटरनेट पर कहीं भी पढ़ा है कि आप आरपीसी के साथ फाइल स्ट्रीम नहीं कर सकते हैं और मुझे इसके लिए सर्वलेट का उपयोग करना होगा। क्या Servlet का उपयोग करने के तरीके और से उस सर्वलेट को कॉल करने का कोई उदाहरण है ReportsServiceImpl। क्या मुझे वास्तव में एक सर्वलेट बनाने की आवश्यकता है या इसे मेरे आरपीसी के साथ वापस स्ट्रीम करना संभव है?
अधिक विस्तार से समस्या कृपया विस्तार से बताएं। "यह नहीं जानता" वास्तव में वर्णनात्मक नहीं है। वास्तव में क्या होता है? वास्तव में क्या नहीं होता है? – BalusC
@sri का उत्तर समझ में आता है। अब कुछ टिप्पणियां पोस्ट करने की मेरी बारी है: 1) 'डेटा इनपुट स्ट्रीम' अतिप्रवाह है। बस सीधे 'FileInputStream' का उपयोग करें। आप सभी * केवल * के बाद 'इनपुटस्ट्रीम' वर्ग में निर्धारित 'read()' विधि की आवश्यकता है। 2) 'इन! = नल' चेक अतिप्रवाह है क्योंकि यह ** कभी ** शून्य नहीं है (आपने 'नया' का उपयोग करके नया बनाया है, जो कभी शून्य नहीं हो सकता है)। 3) 'सामग्री-विस्थापन' शीर्षलेख 'फ़ाइल नाम' भाग में विकृत दिखता है। कुछ विचारों को प्राप्त करने के लिए * मूल * फ़ाइल सेवा कैसे करें, आपको [यह आलेख] (http://balusc.blogspot.com/2007/07/fileservlet.html) उपयोगी हो सकता है। सौभाग्य। – BalusC