2

すべて、私は commons-FileUpload を使用して、生徒がクラスの Web サイトを通じて課題を私のサーバーにアップロードできるようにしています。ローカル マシンで tomcat/eclipse を実行すると問題なく動作します。ただし、digitalocean.com を介してサーバーでテストすると、FileNotFoundException (PermissionDenied) が発生します。

スタックトレース:

java.io.FileNotFoundException:
 /uploads/cosc111fall2013/Assignment1/Program1.java (Permission denied)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:209)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:160)
    at org.apache.commons.fileupload.disk.DiskFileItem.write(DiskFileItem.java:394)
    at uploadServlet.Uploader.doPost(Uploader.java:127)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)

問題のコード:

try {
            for (FileItem fi : uploaded) {
                fi.write(new File(saveDirectory + fileName + "_"
                        + FilenameUtils.getName(fi.getName())));
            }
        } catch (Exception e) {
            e.printStackTrace();
            response.sendRedirect("/uploadFailed.jsp");
            return;
        }

プログラムが書き込むディレクトリを chmoded しただけなので、それらはすべてdrw-rw-rw-. 任意のヒント?

4

1 に答える 1

7

答えは、chmod 666 ではなく 777 でした。

于 2013-09-23T04:55:50.550 に答える