Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何在akka http中上载文件10文件大小>100 KB_Scala_Akka Stream_Akka Http - Fatal编程技术网

Scala 如何在akka http中上载文件10文件大小>100 KB

Scala 如何在akka http中上载文件10文件大小>100 KB,scala,akka-stream,akka-http,Scala,Akka Stream,Akka Http,我有AKKKAHTTPServerVersion10.0,用于将请求文件从邮递员上传到另一个连接AmazonS3的服务 使用图像文件图像大小=275 KB,它有异常 akka.stream.impl.SubscriptionTimeoutException:子流源在5000毫秒内未具体化 使用小于20 KB的图像大小,它可以正常工作 为什么 这是我的密码 (post & entity(as[Multipart.FormData])) { (formData) =>

我有AKKKAHTTPServerVersion10.0,用于将请求文件从邮递员上传到另一个连接AmazonS3的服务

使用图像文件图像大小=275 KB,它有异常 akka.stream.impl.SubscriptionTimeoutException:子流源在5000毫秒内未具体化

使用小于20 KB的图像大小,它可以正常工作 为什么

这是我的密码

(post &
        entity(as[Multipart.FormData])) { (formData) =>
        val fileNamesFuture = formData.parts.mapAsync(1) { p =>
          Future.successful(p.entity, p.name, p.filename)
        }.runFold(List.empty[(BodyPartEntity, String, Option[String])])(_ :+ _)

        val req = fileNamesFuture flatMap { a => createRequestUploadImage(a.find(x => x._2 == "image").get, Url, token) }
        onComplete(req flatMap {
          HttpService.response
        }) {
          case Success(data) =>
            println(data)
            complete("OK")
        }}
提出请求方法

def createRequestUploadImage(file: (BodyPartEntity, String, Option[String]), url: String, token: Option[String] = None): Future[HttpRequest] = {
val formData =
  Multipart.FormData(
    Source.single(
      Multipart.FormData.BodyPart(
        "data",
        file._1,
        Map("filename" -> file._3.getOrElse("")))))

Marshal(formData).to[RequestEntity]
  .map(e => HttpRequest(HttpMethods.POST, uri = url, entity = e)
    .withHeaders(RawHeader("Authorization", token.getOrElse(""))))}
从其他服务上载后获取URL

def response(req: HttpRequest): Future[Response] = {
val connectionFlow: Flow[HttpRequest, HttpResponse, Future[Http.OutgoingConnection]] =
  Http().outgoingConnection(host = req.uri.authority.host.address(), port = req.uri.effectivePort).async

for {
  res <- Source.single(req).via(connectionFlow).runWith(Sink.head)
  data <- Unmarshal(res.entity).to[String]
} yield (res, data)}
这对你有帮助

将其放入application.conf文件中

100m意味着100MB

akka.http.server.parsing.max-content-length = 100m

我使用toStrict,它对我有效,谢谢您的回答