Java 加载存储在web应用程序中的pdf文件时出错
问题: 我的web应用程序的resources文件夹中保存了许多pdf文件。当我试图在jsp中显示该文件时,我无法显示。下面是代码片段: jsp文件:Java 加载存储在web应用程序中的pdf文件时出错,java,javascript,jsp,pdf,Java,Javascript,Jsp,Pdf,问题: 我的web应用程序的resources文件夹中保存了许多pdf文件。当我试图在jsp中显示该文件时,我无法显示。下面是代码片段: jsp文件: <input type="hidden" id="myResourceFile" value="<%=request.getServletContext.getRealPath("/resources/myattmts/")%>"/> <div id="myrowid"> <em
<input type="hidden" id="myResourceFile" value="<%=request.getServletContext.getRealPath("/resources/myattmts/")%>"/>
<div id="myrowid">
<embed TYPE="application/pdf" align="middle" width=100% style="height:400px" id="pdfDoc"/>
</div>
错误:
pdf未加载,因为文件源分隔符“\的计算结果不正确
任何我出错的帮助我正在本地测试web应用程序。但是,在构建和发布之后,它将部署在特定节点上 这里的问题是pdf文件只能从jsp中的应用程序上下文检索 但是,当我使用request.getServletContext.getRealPath/resources/myattmts/时,它会尝试访问tmp/deployment服务器中的实际war文件,即应用程序运行和文件存在的实际物理位置。而且无法从那里读到它 相反,我将jsp中隐藏变量myResourceFile的值更改为应用程序上下文路径,如下所示
jsp change:
<input type="hidden" id="myResourceFile" value="<%=request.getContextPath("/resources/myattmts/")%>"/>
So the file path now reads as "`http://localhost:8080/app-name/resources/myattmts/fileName.pdf"
而不是前一个案例中jsp无法访问的实际物理路径
如E:/MyServer/deployments/tmp/app.war/resources/myattmts/fileName.pdf您的web应用程序是否在本地托管?在您检索服务器上的实际文件系统路径之后,我假定gtRealPath是指getRealPath,并使用它在客户端上对文件进行寻址。您确定要将反斜杠双引号引起来吗?“\”。删除“单引号”后会发生什么。当你用斜杠而不是反斜杠时会发生什么。@mkl是的。我想这就是缺陷!:@本,我没试过。而是使用控制器中的File.SEPARATOR在文件名之前加上斜杠
jsp change:
<input type="hidden" id="myResourceFile" value="<%=request.getContextPath("/resources/myattmts/")%>"/>
So the file path now reads as "`http://localhost:8080/app-name/resources/myattmts/fileName.pdf"