Java servlet中的文件上载临时位置异常

Java servlet中的文件上载临时位置异常,java,apache,servlets,file-upload,Java,Apache,Servlets,File Upload,我的servlet主机在免费试用的apache服务器上进行测试。因此,当我尝试将jpeg图像上载到该服务器中的图像文件夹时,出现以下错误: java.security.AccessControlException: access denied ("java.io.FilePermission" "/usr/local/shared/tomcat/dilis/temp/upload_e1bed5d1_54a9_45e0_b1ae_26732a1441fc_00000059.tmp" "write"

我的servlet主机在免费试用的apache服务器上进行测试。因此,当我尝试将jpeg图像上载到该服务器中的图像文件夹时,出现以下错误:

java.security.AccessControlException: access denied ("java.io.FilePermission" "/usr/local/shared/tomcat/dilis/temp/upload_e1bed5d1_54a9_45e0_b1ae_26732a1441fc_00000059.tmp" "write")
java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
java.security.AccessController.checkPermission(AccessController.java:555)
java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
java.lang.SecurityManager.checkWrite(SecurityManager.java:979)
java.io.FileOutputStream.<init>(FileOutputStream.java:203)
java.io.FileOutputStream.<init>(FileOutputStream.java:165)
org.apache.commons.io.output.DeferredFileOutputStream.thresholdReached(DeferredFileOutputStream.java:178)
org.apache.commons.io.output.ThresholdingOutputStream.checkThreshold(ThresholdingOutputStream.java:224)
org.apache.commons.io.output.ThresholdingOutputStream.write(ThresholdingOutputStream.java:128)
org.apache.commons.fileupload.util.Streams.copy(Streams.java:108)
org.apache.commons.fileupload.util.Streams.copy(Streams.java:70)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:347)
org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115)
sanin.lands.web.Mobile_slt.doPost(Mobile_slt.java:137)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:536)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)

使用Java NIO的
文件。createTempDirectory()
。异常似乎不是由目前发布的代码引起的。服务器获取上传文件的第一步似乎已经失败,因为服务器本身不允许写入磁盘。看到整个stacktrace应该能提供线索。如果确实如此,请联系托管提供商支持团队。我还想知道你是否真的被允许以这种方式将获得的文件写入catalina.home。使用
root
权限发布所有stacktracerun-tomcat
if (!((FilenameUtils.getName(item.getName()) == "") ||
 (FilenameUtils.getName(item.getName()).isEmpty()))) {
    String rootPath = System.getProperty("catalina.home");
    File theDir = new File(rootPath + "\\webapps\\images\\" + max_id);
      // if the directory does not exist, create it
    if (!theDir.exists()) {
        boolean result = theDir.mkdir();
        if (result) {
            System.out.println("DIR created");
        }
    }
    String fieldname = item.getFieldName(); 
    InputStream filecontent = item.getInputStream();
    File f = new File(rootPath + "\\webapps\\images\\" + max_id + "\\" + item.getName());
    try {
        //  item.write(file);
        item.write(f);
    } catch (Exception ex) {
        Logger.getLogger(Mobile_slt.class.getName()).log(Level.SEVERE, null, ex);
    }