gpt4 book ai didi

ubuntu - Tomcat 上的权限被拒绝

转载 作者:行者123 更新时间:2023-11-28 22:40:18 25 4
gpt4 key购买 nike

你能帮我解决下面的问题吗?我有一个“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com