Как транслировать на лету файл большого размера в формате zip, который заполняется из перечислителя? - PullRequest
0 голосов
/ 23 мая 2019

Я хочу транслировать на лету zip-файл, содержащий изображения и xml-файлы, содержимое xml-файлов получено от перечислителя Elem, однако я нахожу такие примеры: https://gist.github.com/kirked/412b5156f94419e71ce4a84ec1d54761. Но моя проблема в том, что содержимое zip не из файлов, а из перечислителя. Так как же напрямую транслировать из перечислителей с помощью фреймворка Scala? вот мой код:

val xmlContent: Enumerator[Elem] = ..
val streamContent: Enumerator[Array[Byte]] = Enumerator.outputStream { os =>
           val zip = new ZipOutputStream(os)
           zip.putNextEntry(new ZipEntry("report.xml"))
           xmlContent.map{node=> zip.write(node.mkString.getBytes)}
            zip.closeEntry()
            zip.close()
        }
Ok.chunked(streamContent >>> Enumerator.eof).as("application/zip").withHeaders(
          CONTENT_DISPOSITION -> "attachment;")
...