Убедитесь, что Content-Length
равно правильно для точного бита. В целях тестирования вы можете закомментировать его. Приложение может только не рассчитать, сколько времени пройдет до окончания загрузки, но оно должно работать. Если длина содержимого была неправильной, то либо браузер будет ожидать поступления большего количества байтов и, следовательно, ожидает (когда длина содержимого превышает фактическую длину файла), либо браузер прервет загрузку и в результате получит неполный файл флэш-памяти (когда длина содержимого меньше фактической длины файла).
Другая подозрительная вещь - заголовок Content-Disposition
. Вы явно не установили его на inline
. Вы никогда не знаете, с IE, поэтому попробуйте явно установить его на inline
или просто закомментировать его для целей тестирования.
Кстати, DataInputStream
здесь лишний. Вы не воспользовались ни одним из его методов. Просто избавьтесь от этого и придерживайтесь FileInputStream
. Или, чтобы улучшить производительность, добавьте BufferedInputStream
вместо этого (и то же самое с BufferedOutputStream
для ответа).