我的src 下面有个servlet : package com.test.servlet;
在又在外面建了个文件夹(不是在src和webroot下面):powerpoint
在powerpoint里面放了个a.ppt
servlet路径:src/com/test/servlet/a.java;
ppt路径:powerpoint/a.ppt;
我在servlet里面要调用ppt,问题在servlet里面a.ppt的相对路径是什么?
谢谢!
在又在外面建了个文件夹(不是在src和webroot下面):powerpoint
在powerpoint里面放了个a.ppt
servlet路径:src/com/test/servlet/a.java;
ppt路径:powerpoint/a.ppt;
我在servlet里面要调用ppt,问题在servlet里面a.ppt的相对路径是什么?
谢谢!
解决方案 »
- java WEB开发的错,各位大牛们帮忙看一下
- JAVA 人人网 自动发帖,留言的情况
- Tomcat6中,读取文件默认目录居然在$TOMCAT_HOME/bin下
- 怎样设置APPLET的codebase?急!!!!!!!!!!
- JSP對話框問題
- 提交form后的值的传输问题
- 用什么软件作jsp的web服务器比较好(不是学习用的),如何配置
- ajax+struct2结合起来实现分页,出现问题了
- 文件上传读数据问题:为什么是两次?而且不一样的内容?
- jdbc问题:连接MySql数据库
- struts 与ajax结合的问题(应该是小问题,只是自己怎么都看不出来错在哪)
- 为什么jsp页面有foreach标签的那块东西显示不出来呢?
web工程是部署在服务器上的,假定你的工程名叫demo
那么在servlet中你能获得的路径就是相对于/demo下的
所有路径。你的ppt如果不在这个工程中,而又要对其进行
IO操作,没有绝对路径是不行的。一般都会把工程中要用
的文件放在WebRoot或WebContent也就是web应用的根目录
或其子目录下,并用相对路径访问。
再访问就简单多了.楼上说的太对了,参考!
在servlet里面改相对路径:
(1).ppt=new File("/PowerPoint/a.ppt");
(2).ppt=new File("PowerPoint/a.ppt");
那ppt还是访问不到,Servlet代码如下:public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("application/vnd.ms-powerpoint");
ServletOutputStream out = response.getOutputStream();
File ppt = null;
BufferedInputStream buffer = null;
try {
//////////////////////////////////////////////
ppt=new File("PowerPoint/a.ppt");
/////////////////////////////////////////////
response.setContentLength((int) ppt.length());
FileInputStream fileInput = new FileInputStream(ppt);
buffer = new BufferedInputStream(fileInput);
int readBytes = 0;
while ((readBytes = buffer.read()) != -1) {
out.write(readBytes);
}
} catch (IOException exception) {
System.out.println("the file was not found !");
} finally {
if (out != null) {
out.close();
}
if (buffer != null) {
buffer.close();
}
}
}
你powerpoint下的a.ppt又发布不到Tomcat下的,
因为你的a.ppt文件没在webroot下。
ppt=new File("PowerPoint/a.ppt");
这样不行。
你这样访问应该就可以了 response.sendRedirect(request.getRequestURL()+"PowerPoint/a.ppt");
我在webroot下面建了一个PowerPoint文件夹,把ppt放到了这个文件夹里面。
ppt=new File("PowerPoint/a.ppt");
把a.ppt所在文件夹加到classpath中,读起来就很方便了
这样写就可以啦!!
给我加分啊!
这样写就可以啦!!
给我加分啊!
给我加分啊!
String path=servlet.getServletContext().getRealPath("/"+"PowerPoint\\a.ppt");
ppt=new File(path); 试试可以吗 我记得以前的时候我是这么写的
这样应该可以
加上自己的工程名称应该是可以用的
然后现servlet中调用this.getServletContext().getContext("/powerpoint").getRealPath("/")(绝对路径);
直接用http://localhost:8080/powerpoint/a.ppt(相对路径)。
String path=request.getRealPath("PowerPoint");
FileReader fr=new FileReader(path + "\\a.ppt");
web工程是部署在服务器上的,假定你的工程名叫demo
那么在servlet中你能获得的路径就是相对于/demo下的
所有路径。你的ppt如果不在这个工程中,而又要对其进行
IO操作,没有绝对路径是不行的。一般都会把工程中要用
的文件放在WebRoot或WebContent也就是web应用的根目录
或其子目录下,并用相对路径访问。