Tomcat上的权限被拒绝

时间:2017-02-02 10:53:51

标签: ubuntu tomcat servlets download

你能帮我解决一下吗?我有一个'DownloadFile'Servlet,可以让你下载一个CSV文件。 Servlet正在我的本地Windows机器上运行,但是在我的服务器上,它会向下载文件路径发出错误,拒绝权限。

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)

1 个答案:

答案 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可以理解的路径中。