如何通过Http Servlet响应发送大文件

时间:2016-04-11 12:25:08

标签: google-app-engine servlets google-cloud-storage google-cloud-endpoints google-cloud-platform

以下是用于发送文件的HttpServletResponse标头和内容类型。最多32MB的数据传递给客户端,但我的整个数据大小为100MB。

response.setContentType("application/octet-stream");
response.setHeader("Transfer-Encoding", "chunked");
response.setHeader("Content-Disposition", "attachment; filename="filename.bin");

我无法将此数据存储到云存储中,因为这将根据用户创建。

这可以通过HttpServletResponse实现吗?或者我需要转向其他方法,比如套接字等。

请为多客户端环境推荐一种方法。

2 个答案:

答案 0 :(得分:1)

App Engine具有配额,旨在保护每个人免受失控的应用程序的侵害。应用程序在单个入站HTTP请求中可以接收的最大数据量为32MB。

如果您想上传较大的文件,请查看Blobstore API

有关详细信息,请参阅quota documentation

答案 1 :(得分:1)

你无法绕过32mb的限制请求。最好的办法是将数据推送到GCS,并生成signed URL

根据生成100mb文件需要执行的操作,您可能需要使用任务队列卸载整个过程以防止请求超时。