任何人都知道支持HttpRanges等的Java File servlet框架

mP.*_*mP. 5 java servlets file

我一直在尝试找到一个servlet文件框架,它提供的不仅仅是读取设置相应标头的文件,就是这样.网上有无数的样本,大多数是非常基本的,很少(几乎没有)支持更复杂的东西,我将在下面描述.

HTTP

Http提供了更丰富的功能,例如 - 范围,有助于实现文件下载简历. - 通过etags和最后修改日期进行缓存控制.

谷歌搜索

但是我找不到比简单文件servlet示例更多的东西.不幸的是,"Java文件下载Servlet框架"和其他类似的组合,是一个非常重载的形式,大多数时候谷歌返回Web框架,而不是那么容易支持前面提到的一些或所有高级功能.

思维...

在我的脑海中,框架将提供如下界面:

FileProvider {
   Date lastModified();
   INputStream inputStream();
   String etag();
   ...
}
Run Code Online (Sandbox Code Playgroud)
  • FileProvider获取文件路径并将其解析为真实文件,可能来自数据库等.
  • 如果文件没有改变(通过读取FileProvider.lastModifier()确定它.
  • 如果请求要求范围,则f/w将读取FileProvider.inputStream(),仅将感兴趣的范围写入HttpServletResponse.
  • 在谈判阶段将使用etag值来确定是否支持范围等.
  • 在给定路径等的情况下,"创建"FileProvider会存在另一个接口.

如果有人知道一个框架,它将所有讨厌的读取标题分开,并比较那些很好的值.

我能找到的最佳来源是

http://balusc.blogspot.com/2009/02/fileservlet-supporting-resume-and.html

但不幸的是,该示例没有插入FileProvider的规定,并假设请求中的路径信息映射到某个目录中磁盘上的文件.

Bil*_*sky 2

Apache Tomcat 的 DefaultServlet 可能拥有您正在寻找的大部分内容。乍一看,我看到了 ETag 解析和 AcceptRange 处理。

http://www.docjar.com/html/api/org/apache/catalina/servlets/DefaultServlet.java.html