private void downloadAllRelease(HttpServletRequest request,
HttpServletResponse response) {
LoginToken tok=getToken(request, response);
int size = 0;
try {
ArrayList<Release> releases = manager.getReleases(tok.getUsername);
ZipOutputStream out = new ZipOutputStream(response.getOutputStream());
for (int i=0; i<releases.size(); i++) {
size += releases.get(i).getFile().length;
out.putNextEntry(new ZipEntry(releases.get(i).getFilename()));
out.write(releases.get(i).getFile());
out.closeEntry();
}
response.setContentLength(size);
response.setContentType("application/force-download");
response.setHeader("Content-Disposition","attachment;filename=release.zip");
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
response.setContentLength()
reeeeally डाउनलोड धीमा कर देती है धीमा कर देती है।
यदि मैं इसका उपयोग नहीं करता हूं या इसे out.close()
के बाद रखता हूं तो सब कुछ ठीक काम करता है लेकिन डाउनलोड बहुत तेज़ होते हैं।
क्या कोई मुझे बता सकता है कि response.setContentLength()
का उपयोग करना क्यों आवश्यक है?सर्वलेट: response.setContentLength() नीचे डाउनलोड
आपके प्रश्न ने जेट्टी 9 में सर्वलेट-एपीआई-3.1 के साथ एक समस्या का समाधान किया। मैंने अपने सर्वलेट में प्रतिक्रिया.सेटकंटलेट लम्बाई() को हटा दिया; प्रतिक्रिया समय अब पिछले जेटी संस्करणों के साथ जो मिल रहा था उससे मेल खाता है। – faizal
@faizal Glad मदद की है। – Simon