J'ai un problème avec le téléchargement en utilisant ce code servlet qui utilise Tomcat NIO and Sendfile:problème avec le téléchargement de gros fichiers via Tomcat NIO et Sendfile
long fileSize = file.length();
long startAt = 0;
if (request.getHeader("Range") != null) {
response.setStatus(206);
startAt = Long.parseLong(request.getHeader("Range").replaceAll("bytes=", "").split("-")[0]);
}
long dataToWrite = fileSize;
if (startAt > 0) {
response.setHeader("Content-Range", String.format("bytes - %d-%d/%d", startAt, fileSize - 1, fileSize));
dataToWrite = fileSize - startAt;
}
request.setAttribute("org.apache.tomcat.sendfile.filename", file.getCanonicalPath());
request.setAttribute("org.apache.tomcat.sendfile.start", startAt);
request.setAttribute("org.apache.tomcat.sendfile.end", fileSize);
response.setContentLength(Long.valueOf(dataToWrite).intValue());
Il Travaillons avec succès avec le fichier abou 20Mb. Mais quand j'essaye de télécharger le dossier avec la taille environ 288Mb je vois le dossier vide. La taille du fichier téléchargé est 0 octet. J'utilise jre6, 6.x tomcat avec NioConnector:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" useSendfile="true" />
Je ne l'ai jamais utilisé auparavant, alors voici juste un tir rapide dans le noir: essayez d'omettre 'response.setContentLength()'. – BalusC