java - 文件上传流从哪里获取内容?

标签 java http tomcat file-upload tcp

我有一个关于文件上传的问题,它更多地与其工作方式有关,而不是代码问题。我在网上查了一下,但找不到合适的答案。

我有一个在 tomcat 上运行的 Web 应用程序,它处理文件上传(通过 servlet)。假设我现在想上传大文件(> 1 Gb)。我的理解是,一旦整个文件实际传输完毕,HTTP 请求的多部分内容就可以在我的 servlet 中使用。

我的问题是请求的内容实际存储在哪里?当调用 HttpServletRequest.getParts() 时,一个 InputStreamPart 对象上可用。但是,流从哪里读取? Tomcat 是否将其存储在某个地方?

我想这可能不够清楚,所以我会根据您的意见更新帖子,如果有的话。

谢谢

最佳答案

Tomcat 将 Part 存储在“X:\some\path\Tomcat 7.0\temp” (/some/path/apache-tomcat-7.0.x/temp) 目录中。

当解析多部分请求时,如果单个部分的大小超过阈值,则会为该部分创建一个临时文件。

当所有部分的传输完成后,您的 servlet/jsp 将被调用。

当请求被销毁时,所有临时文件也会被删除。

如果您对多部分解析阶段感兴趣,请查看 apache commons-fileupload(特别是 ServletFileUpload.parseRequest()),tomcat 基于它的变体

更新

您可以将其配置为 java arg,即在 Windows 中:

enter image description here

关于java - 文件上传流从哪里获取内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20242672/

相关文章:

http - 这些 HTTP 3xx 状态代码有什么区别?

当没有明确的命令时,C 套接字 HTTP 请求异步打印响应

java - 如何在 pom.xml 中定义特定的 jar 以部署到 TOMCAT/lib 文件夹?

java - 我如何允许它遍历每个元素以检查它是否相等?

java - 输出数组列表的内容

java - IllegalState Sonar 自定义插件中至少存在一个问题

java - 无法在 Chrome 中加载图像资源

java - 如何在 Java 中打印转义字符?

c# - 使用 C# 从 HTTP 响应中抓取图像

tomcat - 同一 Tomcat 服务器上的新 GoDaddy SSL 证书失败?