2

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

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

4

2 回答 2

0

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

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)

在第一行,您还可以使用Multipart.FormData.fromPathwhich 将接受文件路径而不是文件对象本身。

于 2021-02-19T08:26:53.127 回答
0

我想现在有点晚了,但是这个例子有一个客户端和一个服务器。

我复制相关部分

  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)
于 2016-10-18T13:18:31.910 回答