使用Akka HTTP上传多部分表单数据

时间:2015-06-03 23:02:46

标签: akka akka-http

我正在试图弄清楚如何创建多部分表单数据请求 使用Akka HTTP(客户端API),但我找不到表达表单数据的方法。

有谁知道如何创建将采用文件或输入流的表单数据?

2 个答案:

答案 0 :(得分:1)

我现在觉得有点晚了,但这个example有一个客户端和一个服务器。

我复制相关部分

  def createEntity(file: File): Future[RequestEntity] = {
    require(file.exists())
    val formData =
      Multipart.FormData(
        Source.single(
          Multipart.FormData.BodyPart(
            "test",
            HttpEntity(MediaTypes.`application/octet-stream`, file.length(), SynchronousFileSource(file, chunkSize = 100000)), // the chunk size here is currently critical for performance
            Map("filename" -> file.getName))))
    Marshal(formData).to[RequestEntity]
  }

  def createRequest(target: Uri, file: File): Future[HttpRequest] =
    for {
      e ← createEntity(file)
    } yield HttpRequest(HttpMethods.POST, uri = target, entity = e)

答案 1 :(得分:0)

实现这一目标的最简单方法是:

<div id="catch_div">
    <asp:Label ID="Label1" runat="server" Text="Label" CssClass="catchphrase">Feel the rythem</asp:Label>
</div>

在第一行,您还可以使用 val formData = Multipart.FormData. fromFile("<FORM_DATA_KEY>", MediaTypes.`application/octet-stream`, file = file, 100000) val httpRequest = HttpRequest(HttpMethods.POST, uri = target, entity = formData.toEntity) 来接受文件路径而不是文件对象本身。