ubuntu - Tomcat 上的权限被拒绝

标签 ubuntu tomcat servlets download

你能帮我解决下面的问题吗?我有一个“DownloadFile”Servlet,可让您下载 CSV 文件。 Servlet 在我的本地 Windows 机器上运行,但是在我的服务器上,它抛出错误,拒绝下载文件路径的权限。

Tomcat 安装在 Tomcat User 上。 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");

错误:

类型异常报告

消息\opt\tomcat\logs\myfile.csv(权限被拒绝)

说明服务器遇到内部错误,无法完成此请求。

异常

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)

最佳答案

在基于 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 可以理解的路径。

关于ubuntu - Tomcat 上的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42000314/

相关文章:

ubuntu - 如何一次运行多个存在于不同目录中的 go 程序?

laravel - 符号链接(symbolic link)通过部署脚本在 Laravel Envoyer 中上传文件夹

java - IO异常 : When Executing Java File Code in Linux box

java - 使用 Java Servlet 扩展现有的 Web 应用程序

c++ - 使用带有 CMake 和 Conan 的外部库的 undefined reference

java - 如何将Maven项目作为jar文件部署到Tomcat?

java - tomcat没有运行eclipse应用程序

java - 将 Tomcat Basic Auth 与新的 WebApplicationInitializer 结合使用

javascript - JavaScript 可以向 Web 容器 Servlet 发送 HTTP 请求吗?

java - 使 session 无效后我的 session 未变为 Null