加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 从请求中提取Spray.io Content-Type?

发布时间:2020-12-16 18:40:49 所属栏目:安全 来源:网络整理
导读:由于Spray.io是在低级别定义内容类型,我如何简单地引用传入请求的内容类型? 这是一个图像是PUT的简短示例. put { entity(as[Array[Byte]]) { data = complete{ val guid = Image.getGuid(id) val fileExtension = // match a file extension to content-typ
由于Spray.io是在低级别定义内容类型,我如何简单地引用传入请求的内容类型?

这是一个图像是PUT的简短示例.

put {
        entity(as[Array[Byte]]) { data =>
          complete{
            val guid = Image.getGuid(id)
            val fileExtension = // match a file extension to content-type here
            val key = "%s-%s.%s" format (id,guid,fileExtension )
            val o = new Image(key,contentType,data)
            Image.store(o)
            val m = Map("path" -> "/client/%s/img/%s.%s" format (id,fileExtension))
            HttpResponse(OK,generate(m))
          }
        }
      }

鉴于上面的代码,提取内容类型的简单方法是什么?我可以简单地使用它来模式匹配到适当的fileExtension.谢谢你的帮助.

解决方法

您可以构建自己的指令来提取内容类型:

val contentType =
??headerValuePF {
????case`Content-Type`(ct)=> CT
??}

然后在你的路线中使用它:

put {
    entity(as[Array[Byte]]) { data =>
      contentType { ct =>  // ct is instance of spray.http.ContentType
        // ...
      }
    }
  }

编辑:如果你在每晚构建,MediaTypes已经包含文件扩展名,所以你可以使用那里的文件扩展名.在1.1-M7上,您必须按照建议提供自己的映射.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读