Трябва да позволя на потребител да изтегли голям динамично генериран CSV файл (~500K реда) от браузър (приложение Java/Spring MVC 4.x) Не искам първо да създавам целия файл и браузърът да е дълъг - анкета на сървъра, за да се определи кога е завършена -- по-скоро искам да започна изтеглянето незабавно и да накарам сървъра да предава поточно отговора, когато новите редове/байтове станат достъпни.
Опитах се да използвам ServletOutputStream/PrintWriter, за да добавя текста, когато стане наличен, и след това да изчистя буфера. Изглежда обаче, че браузърът не започва да изтегля, докато методът на контролера не се върне. (след извикването на flushBuffer() ще видите файла да се показва като изтеглен със съобщението „стартира“ в Chrome).
Има ли по-добър начин да направите това? Виждам, че StreamingResponseBody е въведен през пролетта 4.2, но предпочитам да не надграждам, ако е възможно. Има ли начин да направите това с Spring ‹4.2?