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

使用Akka HTTP上传多部分表单数据,akka,akka-http,Akka,Akka Http,我试图弄清楚如何创建一个由多个部分组成的表单数据请求 使用Akka HTTP(客户端API),但我找不到表达表单数据的方法 有人知道如何创建需要文件或输入流的表单数据吗?我想现在有点晚了,但它有一个客户端和一个服务器 我复制了相关部分 def createEntity(file: File): Future[RequestEntity] = { require(file.exists()) val formData = Multipart.FormData(

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


有人知道如何创建需要文件或输入流的表单数据吗?

我想现在有点晚了,但它有一个客户端和一个服务器

我复制了相关部分

  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)

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

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)
val formData=Multipart.formData。
fromFile(“”,
MediaTypes.`application/octet stream`,
file=file,
100000)
val httpRequest=httpRequest(HttpMethods.POST,uri=target,entity=formData.toEntity)
在第一行,您还可以使用
Multipart.FormData.fromPath
,它将接受文件路径而不是文件对象本身