我将 JSF 1.2 与 RichFaces 一起使用。是否可以模仿 Web 浏览器客户端的“另存为”?更准确地说,我想在页面上添加一个“下载 zip”。目的是生成一个 zip 存档,其中包含 HTML 生成的页面以及所有必要的文件,以便以正确的布局打开该页面。
我过去成功地通过HttpResponseWrapper
. 但是一旦页面包含 RichFaces 组件,就需要一些 JS 和图像才能正确显示。我怎样才能让这些资源将它们添加到 zip 中?
使用像Jsoup这样的 HTML 解析器。它可以通过类似 jQuery 的 CSS 选择器轻松找到 CSS/JS/image 元素,并返回资源 URL,以便您可以单独下载它们。
InputStream input = new URL(url).openStream();
// ... Save webpage itself.
Document document = Jsoup.parse(savedWebPage, "UTF-8", url);
for (Element stylesheet : document.select("link[rel=stylesheet]")) {
InputStream input = new URL(stylesheet.absUrl("href")).openStream();
// ... Save individual stylesheet file.
}
for (Element script : document.select("script[src]")) {
InputStream input = new URL(script.absUrl("src")).openStream();
// ... Save individual script file.
}
for (Element img : document.select("img[src]")) {
InputStream input = new URL(img.absUrl("src")).openStream();
// ... Save individual image file.
}
不考虑 CSS 背景图像。您可以考虑在每个单独的 CSS 文件上使用类似SAC的 CSS 解析器。