2

我正在使用 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”,尽管我从“实体”对象中获取数据。我尝试仔细研究 API,但找不到任何获取文件名的方法。

我的目标是确保我只允许上传 csv 文件。

4

2 回答 2

1

您需要使用将实体作为表单数据处理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)
        }

    }
于 2015-12-10T20:11:29.257 回答
0

这可能会有所帮助:

在此处输入图像描述

文件名可以在parameters.

于 2017-02-23T14:43:44.187 回答