3

我尝试增加最大内容长度,以便可以将大文件上传到服务器。

我已将此添加到application.conf

spray.can {
  server {
    parsing {
      max-content-length = 2g
      max-chunk-size = 10m
    }
  }
}

然而,上限似乎仍为 1MB。我可以确认读取了参数,因为我可以降低上限并且它将生效。

应用程序触发响应错误 ( 413 Request Entity Too Large),我有一个 HttpService(接受 CORS)和一个如下所示的路由:

val contentRoute =
  cors {
    pathPrefix(PROJECTS) {
      (post & path(Segment / CONTENT)) { (projectId) =>
        post {
          entity(as[MultipartFormData]) { data =>
            complete(StatusCodes.OK)
          }
        }
      }
    }
  }

我是否还需要调整其他一些偏好,默认情况下也设置为 1MB?

更新:

这些是依赖版本:

libraryDependencies ++= {
  val akkaV = "2.3.9"
  val sprayV = "1.3.3"
  Seq(
    "io.spray"            %%  "spray-can"     % sprayV,
    "io.spray"            %%  "spray-routing" % sprayV,
    "io.spray"            %%  "spray-json"    % "1.3.2",
    "io.spray"            %%  "spray-testkit" % sprayV  % "test",
    "com.typesafe.akka"   %%  "akka-actor"    % akkaV,
    "com.typesafe.akka"   %%  "akka-testkit"  % akkaV   % "test",
    "org.specs2"          %%  "specs2-core"   % "2.3.11" % "test",
    "org.mongodb"         %%  "casbah"        % "2.8.2"
  )
}
4

1 回答 1

2

我的错,配置正确且有效。希望其他有同样问题的人会偶然发现这篇文章。

问题不是spray-can,而是前面的nginx代理。显然还必须修改 nginx 中的最大内容长度限制。

这是通过将以下内容放入/etc/nginx/nginx.conf

http {
    server {
        ...
        client_max_body_size 100M;
        ...
    }
}
于 2015-12-08T10:36:13.297 回答