我正在尝试通过 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/