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()
ralentiza reeeeally descargas abajo.
Si no lo uso o lo puse después de out.close()
todo funciona bien, pero las descargas son mucho más rápidas.
¿Alguien me puede explicar por qué y si es necesario usar response.setContentLength()
?Servlet: response.setContentLength() ralentiza descargar abajo
Tu pregunta resolvió un problema que estaba teniendo con servlet-api-3.1 en Jetty 9. Eliminé el response.setContetLength() en mi servlet; el tiempo de respuesta ahora coincide con lo que obtenía con las versiones anteriores de Jetty. – faizal
@faizal Me alegro de haber sido de ayuda. – Simon