gpt4 book ai didi

Java Struts2 - 访问 JSP 中 WEB-INF 文件夹中的 .pdf 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:04 26 4
gpt4 key购买 nike

我有一个复杂的问题。

我在 WEB-INF/folder/test.pdf 下保存了一个 pdf 文件但是现在,我希望能够在 JSP 文件中下载该 pdf 文件。我知道 WEB-INF 中的文件无法通过 URL 看到,但我已经尝试了此页面中所有可能的答案,但都没有奏效。

String pathDownload = ((ServletContext) ActionContext.getContext().get(StrutsStatics.SERVLET_CONTEXT)).getRealPath("/WEB-INF/folder/")+ "\\";

在我的 JSP 文件中我得到了:

<a href="<%=pathDownload%>/test.pdf" >

所以,URL路由是正确的,但是点击时什么都不做,返回null。

我试图在文件 web.xml 中写一些东西,但没有任何效果。

还在 execute() 中的 InputStream 中尝试了 extends ActionSupport implements SessionAware

任何人都可以帮助解释我必须做什么吗?

最佳答案

客户端“知道”服务器端的实际路径是无关紧要的。因此,如果您“告诉”客户端实际路径,那将无济于事。代替: <a href="<%=pathDownload%>/test.pdf" > , 就做 <a href="download.action?file=folder/test.pdf" > .要使此示例正常工作,您必须映射 download具有流结果类型的操作的 url 操作:

<action name="download">
<result name="success" type="stream">
<param name="contentType">application/pdf</param>
<param name="inputName">fileStream</param>
<param name="contentDisposition">attachment;filename="document.pdf"</param>
<param name="bufferSize">1024</param>
</result>
</action>

在你的DownloadAction.java , 你只需要阅读 file 提到的文件参数并创建一个名为 fileStream 的属性包含文件内容:

public class DownloadAction extends ActionSupport{

private InputStream fileStream;
private String file;

public InputStream getFileStream() {
return fileStream;
}

public void setFile(String file) {
this.file = file;
}

public String execute() throws Exception {
fileInputStream = new FileInputStream(
new File(
((ServletContext) ActionContext.getContext().get(StrutsStatics.SERVLET_CONTEXT))
.getRealPath("/WEB-INF/folder/")
+
file
)
);
return SUCCESS;
}
}

关于Java Struts2 - 访问 JSP 中 WEB-INF 文件夹中的 .pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35289993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com