Tomcat安装在Tomcat用户上。 Tomcat用户是几个文件夹的所有者,但是,我仍然得到权限被拒绝的问题。
以下是代码和错误:
File f = new File("\\opt\\tomcat\\logs\\myfile.csv");
int length = 0;
ServletOutputStream op = response.getOutputStream();
ServletContext context = getServletConfig().getServletContext();
String mimetype = context.getMimeType("text");
response.setContentType((mimetype != null) ? mimetype: "application/octet-stream");
response.setContentLength((int) f.length());
response.setHeader("Content-Disposition","attachment; filename=csv1.csv");
错误:
ype异常报告
message \ opt \ tomcat \ logs \ myfile.csv(Permission denied)
说明服务器遇到内部错误,导致无法完成此请求。
例外
java.io.FileNotFoundException: \opt\tomcat\logs\myfile.csv (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:101)
java.io.FileWriter.<init>(FileWriter.java:63)
in.travelfiles.Csv1.doGet(Csv1.java:51)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
答案 0 :(得分:2)
在基于Unix的环境中,文件分隔符是正斜杠。 Unix机器不会喜欢反斜杠字符。在构建文件路径字符串时,Java允许您使用类似以下内容的O / S独立方式创建它:
String fileSeparator = System.getProperty("file.separator");
String fileName = fileSeparator + "opt" + fileSeparator + "tomcat" +
fileSeparator + "logs" + fileSeparator + "myfile.csv";
fileName可以在Windows或Unix上运行。
我首先要看看你是否可以阅读该文件。 O / S仍然可能不允许运行Tomcat的用户读取文件,但首先将其放入Unix可以理解的路径中。