Получение имени файла из запроса POST в Spray-can
Я использую Spray-can для размещения службы REST, в которую пользователь сможет загрузить файл. Блок кода, который прослушивает входящие запросы, приведен ниже:
def receive: Receive = {
case _: Http.Connected => sender ! Http.Register(self)
case req@HttpRequest(HttpMethods.POST, Uri.Path("/upload"), headers, entity, _) =>
logger.info("Received file upload request.")
// Process the uploaded data using the 'entity' object
Я загружаю файл с помощью этой команды curl:
curl --data-binary @inputFile.csv 'devserver:8998/upload?tenant=DressShop&facility=CityCenter&customer=Jimmy'
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу выбрать имя файла "inputFile.csv" из запроса, хотя я получаю данные из объекта "entity". Я попытался просмотреть API, но не смог найти способ получить имя файла.
Моя цель - разрешить загрузку только CSV-файлов.
2 ответа
Вам необходимо обработать объект как данные формы, используя as
as[MultipartFormData]
Затем вы можете получить имя файла из полей заголовка:
def processFormData(data: MultipartFormData) = {
var attForm = ""
val bodyPart = data.fields(0)
data.fields foreach {
bodyPart => println(bodyPart.headers.find(h=> h.is("content-disposition")).get.value)
}
}