【发布时间】:2016-08-01 14:42:13
【问题描述】:
以下是用于发送文件的 HttpServletResponse 标头和内容类型。最多 32MB 的数据被传递给客户端,但我的整个数据大小为 100MB。
response.setContentType("application/octet-stream");
response.setHeader("Transfer-Encoding", "chunked");
response.setHeader("Content-Disposition", "attachment; filename="filename.bin");
我无法将此数据存储到云存储中,因为这将由每个用户创建。
这可以通过HttpServletResponse来实现吗?或者我需要使用其他方法,比如套接字等。
请推荐一种多客户端环境的方法。
【问题讨论】:
-
嗨@Brainislav 我正在使用谷歌应用引擎来实现这一点。需要 GAE 标签才能获得可见性。
-
这种情况(32MB 问题)是否发生在任何浏览器上,或者仅发生在特定浏览器上。设置
Content-Length标头可能很有用。另见stackoverflow.com/questions/685271/… -
您应该通过API设置分块传输模式,而不是这样。除非您通过 API 告诉它,否则它实际上不会进行任何分块。
-
@EJP 怎么做?请分享参考。
-
Err,哎呀,
HttpServletResponse中没有相应的 API,但这也是不设置标头的更多原因。除非 servlet 容器这样做,否则不会有任何分块编码,在这种情况下,它将插入自己的分块和自己的标头。在 Tomcat 中,这是通过设置Connectorproperty 来完成的。
标签: google-app-engine servlets google-cloud-storage google-cloud-endpoints google-cloud-platform