【问题标题】:JSP can't write fileJSP 无法写入文件
【发布时间】:2013-01-10 13:20:13
【问题描述】:

我有一个文件上传 JSP 可以正常工作,但现在不行。 在我们更换服务器并更新软件(tomcat5 到 tomcat6 等)后,它现在无法正常工作。 代码如下:

FileOutputStream fileOut = new FileOutputStream(savePathFile);
fileOut.write(dataBytes, startPos, (endPos - startPos));

文件是使用第一行 new FileOutputStream(...) (filesize is 0) 创建的,但第二行 .write 会引发异常。文件的所有者/组是 tomcat/tomcat。

所以看来tomcat应该有正确的权限。
我还查看了 tomcat java 权限策略(catalina.policy),看看是否有正确的 FilePermissions。他们不在那里,所以我们补充说:

grant codeBase "file:${catalina.home}/webapps/myapp/-" {
permission java.io.FilePermission "/var/lib/tomcat6/webapps/myapp/photographs", "read, write";
}

但这并没有什么不同。然后我被告知没有在启用安全选项的情况下启动tomcat。

tomcat6.conf:SECURITY_MANAGER="false"

我不确定我还应该去哪里看。我有几个明确的问题:

如何查看用户 tomcat 对该目录的实际权限(rwx)?

如何验证tomcat是否在启用安全选项的情况下运行?

对于权限,应该是:

grant codeBase "file:${catalina.home}/webapps/myapp/admin/-" {

因为upload.jsp文件在webapps/myapp/admin目录下?

感谢您的帮助, 弗兰克

【问题讨论】:

  • 抛出了什么异常?向我们显示错误消息。
  • 这是来自 FileOutputStream.write() 调用的 IOException,并且 Exception.getMessage() 为“null”。
  • 你的第二行有错字吗? FileOut 应该是 fileOut。
  • 看起来这个编辑器将行的第一个字符大写 - 它是 fileOut - 我编辑了帖子。
  • 你使用过fileOut.close(); ?

标签: jsp tomcat file-permissions


【解决方案1】:

这不会回答你的问题,而是指向一个完全不同的方向(架构方面):

将文件直接上传到您的 Web 应用程序是一种不好的做法。有几个原因:

  • 您的应用程序可能没有“爆炸”,因此纯粹存在于未解压缩到文件系统的 WAR 文件中。因此没有目录可以写入
  • 您需要检查漏洞。否则很容易将恶意文件上传到您的服务器:想象一个要上传的文件administration.jsp。 Tomcat 会很高兴地在服务器端编译/执行它(这可能正是您所追求的,但“照片”文件夹表明它是应该存储在其他地方并由下载 servlet 提供的图像资源 - 您仍然可以使路径看起来像是作为静态资源提供的
  • 在更新时,您必须记住,您的 Web 应用程序可能包含与您之前部署的内容不同的内容 - 例如。所有上传的资源。如果其他人进行更新是为了排除故障(“我知道如何升级 tomcat 应用程序 - 可能会出什么问题?”),他们可能会无意中删除所有上传的资源。

通过这些更改,我建议配置一个绝对路径以配置为可被 tomcat 写入。

回到您原来的问题,您可能想检查您的新 tomcat 是否确实以对您的目录具有写入权限的用户 tomcat 运行。还要检查文件系统的容量、用户的配额以及目录的所有者和权限

【讨论】:

  • olaf - 感谢 cmets,我最近阅读了有关该主题的一些帖子,并将考虑将照片上传目录从 webapps 下移出。我将尝试确认权限、容量和配额。谢谢。
  • 确认用户为tomcat,rwx权限,无容量或配额问题。
【解决方案2】:

我解决了这个问题 - 它与解析多部分数据的方式有关。我不确定为什么新服务器会改变,也许是字符编码,但我改变了我的代码并且它正在工作。谢谢你们所有的cmets。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多