【问题标题】:Getting file name from POST request in Spray-can从喷雾罐中的 POST 请求中获取文件名
【发布时间】:2015-04-28 09:01:42
【问题描述】:

我正在使用 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 文件。

【问题讨论】:

    标签: spray spray-client


    【解决方案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)
            }
    
        }
    

    【讨论】:

      【解决方案2】:

      这可能会有所帮助:

      文件名可以在parameters中找到。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多