При загрузке большого файла (> 1 ГБ) в Grails мне нужно получить к нему доступ только через поток, нет необходимости сохранять весь файл на диск или в ОЗУ. Однако как я могу получить доступ к потоку загрузки? Я пробовал с Interceptor:
class UploadLargeFileInterceptor {
int order = HIGHEST_PRECEDENCE
UploadLargeFileInterceptor() {
match(controller:"apiv2", action:"uploadLarge")
}
boolean before() {
log.error('before')
log.error(request.getInputStream().text.length() as String)
true
}
boolean after() {
log.error('after')
true
}
void afterView() {
// no-op
}
}
но длина потока всегда равна 0, а в контроллере есть составной файл, которого я стараюсь избегать, потому что он будет хранить весь файл. Любые идеи?