如何在java servlet中加载zip文件并公开为URL

时间:2017-06-12 15:11:58

标签: java url servlets microservices embedded-jetty

我的要求是从java servlet中的文件系统加载一个zip文件并公开为URL(不提取zip文件)。

例如,zip文件位于C:\ temp \ example.zip中。此zip文件的内容为

  1. example.html及其相关文件
  2. one.js
  3. two.js。
  4. 如何构建像“http://localhost:8080/app/example.zip/example.html”这样的网址? 服务器可能是码头。任何帮助都非常感谢。感谢。

    我甚至可以更改服务器或者也可以使用其他一些方法来实现上述解决方案。如前所述,唯一的限制是“不应该提取”。

2 个答案:

答案 0 :(得分:0)

如果你需要为档案中的每个条目生成一个URL,最好的办法是只列举条目,这些条目希望只读取ZIP文件的目录:

    List<URL> urls = new ArrayList<>();

    ZipFile zip = new ZipFile( file );

    Enumeration<? extends ZipEntry> entries = zip.entries();
    while( entries.hasMoreElements() )
        urls.add( new URL( "http://localhost:8080/app/"
            + file.getName() + "/" + entries.nextElement().getName() ) );

    zip.close();

答案 1 :(得分:0)

我通过创建另一个休息服务并遍历Zip条目并在ServletOutputStream中编写特定文件内容来解决这个问题...所以这可以通过这个休息服务来访问。感谢大家的建议。