web-services - 在接收服务器上没有磁盘缓冲的 Jersey 多部分流

标签 web-services tomcat stream jersey multipartform-data

我正在尝试通过 HTTP 将(大)文件流式传输到数据库中。我使用 Tomcat 和 Jersey 作为 Webframework。我注意到,如果我将文件 POST 到我的资源,该文件首先会在磁盘上缓冲(在 temp\MIME*.tmp} 中,然后再在我的 doPOST 方法中处理。

这确实是一种不受欢迎的行为,因为它会使磁盘 I/O 加倍,并且还会导致有点糟糕的用户体验,因为如果浏览器已经完成上传,用户需要等待几分钟(当然取决于文件大小)直到他得到 HTTP 响应。

我知道这可能不是大文件上传的最佳实现(因为您甚至没有任何简历功能),但要求也是如此。 :/

所以我的问题是,是否有任何方法可以禁用 MULTIPART POST 的(磁盘)缓冲。内存缓冲显然太昂贵了,但我真的不认为需要磁盘缓冲吗? (请解释)像YouTube这样的大型网站如何处理这种情况?或者至少有机会在文件发送后立即向用户提供反馈? (应该是坏的,因为仍然可能有类似 SQLException 的东西)

最佳答案

如果有人仍然感兴趣,我使用 Apache Commons Streaming api 解决了同样的问题

该页面上的代码示例对我来说工作得很好。

关于web-services - 在接收服务器上没有磁盘缓冲的 Jersey 多部分流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10615410/

相关文章:

c++ - 如何关闭IStream?

java - 如何告诉 Apache CXF 在 Spring 配置中使用 java.util.Date

c# - 通过 C# Web 服务进行异常处理

java - 小程序未加载到 tomcat 中

spring - 无法在spring boot中启动嵌入式Tomcat

java - Java系统属性和上下文参数的比较

javascript - 使用 JavaScript 的 Flickr API

wcf - WCF 和 ADO.Net 数据服务处于什么位置?

Java:处理从文件读取的流

c# - 如何在 C# 中针对流安全地创建 XPathNavigator?