Это возможно с помощью Spray, хотя я не проверял, работает ли потоковая передача должным образом.Я немного поиграл, и все заработало:
post {
content(as[MultipartFormData]) {
def extractOriginalText(formData: MultipartFormData): String = {
formData.parts.mapValues { (bodyPart) =>
bodyPart.content.map{
(content) => new String(content.buffer)
}
}.values.flatten.foldLeft("")(_ + _)
}
formData =>
_.complete(
extractOriginalText(formData)
);
}
Если вы загружаете простой текстовый файл в службу, в которой есть этот код, он откашливает оригинальный текст.У меня это работает вместе с загрузкой AJAX;он также должен работать со старомодной формой загрузки файлов.
Мне кажется, что должен быть более простой способ сделать это, особенно глубокое вложение контента довольно неуклюже.Дайте мне знать, если найдете упрощение.
ОБНОВЛЕНИЕ (thx akauppi):
entity(as[MultipartFormData]) { formData =>
complete( formData.fields.map { _.entity.asString }.flatten.foldLeft("")(_ + _) )
}