【发布时间】:2013-10-11 14:34:43
【问题描述】:
在我读取请求正文之前,所有数据都存储在其中,这对我来说非常有趣。
例如,一个文件正在上传到服务器。 Java 程序接收此文件。如果文件非常大 - 100 GB,则不可能将整个文件内容存储在缓冲区中。
Java 是否从远程计算机流式传输此文件?我的意思是远程计算机发送一小部分数据,Java 接收这部分并等待下一部分。当远程计算机决定服务器读取第一部分数据时,它会发送第二部分数据,依此类推。
Java 及其HttpServer 是否以这种方式工作,还是像 Apache+PHP 那样将整个文件存储在磁盘上?
【问题讨论】:
-
你说的java和它的HttpServer是什么意思?!您使用的是哪个服务器?顺便说一句,缓冲整个流真的不合逻辑!
-
嗨,如果我实现 HTTP 服务器,就像主题 stackoverflow.com/questions/3732109/… 中描述的那样。当我收到文件上传请求时,这在低级别是如何工作的。在我阅读整个 t.getRequestBody() 之前,文件内容放在哪里?
-
它会占用内存,直到 JVM 抛出内存不足异常,你知道,开发人员(你)应该注意这些数据需要如何操作,你会获取输入流并读取数据作为缓冲区,换句话说,如果某些(必需)数据可用,则输入流读取方法不会阻塞线程
标签: java http networking request streaming