2014-05-14 146 views
1

我有一个应用程序,我想要打开一个在运行时打开并创建的JSP文件。我的问题是,如果我没有固定的路径,应该如何打开它。我如何知道它在哪里以及如何在运行时打开它?如何在JSP中打开PDF文件?

+0

是否将它保存在项目路径中?就像在web内容下一样。 –

+0

是的。所有的pdf文件将有名称模式,如“DS”+ ID +“否”。 –

回答

1

你可以使用servlet。

@WebServlet("/Test.pdf") 
public class PdfServlet extends HttpServlet { 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
File file = new File("D:\\Test\\Test.pdf"); 
response.setHeader("Content-Type", getServletContext().getMimeType(file.getName())); 
response.setHeader("Content-Length", String.valueOf(file.length())); 
response.setHeader("Content-Disposition", "inline; filename=\"Test.pdf\""); 
    Files.copy(file.toPath(), response.getOutputStream()); 
} 
} 

(如果Servlet的3.0不可用,那么它在web.xml中通常的方式映射,如果Java 7的是不可用的,然后使用一个读/写循环通常的方式)

只是copypaste这个类全部加入到你的项目中,并通过/contextpath/Test.pdf而不是/contextpath/youroriginal.jsp打开所需的PDF文件(当然,它已经在一个包中组织并自动完成了必要的导入)。

E.g.如在JSP如下,你想显示PDF内嵌:

<object data="${pageContext.request.contextPath}/Test.pdf" 
type="application/pdf" width="500" height="300"> 
<a href="${pageContext.request.contextPath}/Test.pdf">Download file.pdf</a> 
0

解决您的问题重新编写链接线

<A HREF="<%="file://D:/filesDir/"+fileNames[i] %>"><%= fileNames[i]%></A> 

但如果你真的想要的文件是在其他系统上访问,除了服务器本身,你应该将你的文件移动到你的web目录,然后使用相对路径进行访问