У меня возникли проблемы с загрузкой с использованием этого кода сервлета, в котором используются Tomcat NIO и 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());
Он успешно работает с файлом размером до 20 МБ.Но когда я пытаюсь скачать файл размером около 288 Мб, я вижу пустой файл.Размер загружаемого файла составляет 0 байт.Я использую jre6, Tomcat 6.x с NioConnector:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" useSendfile="true" />