【问题标题】:Uploading files with Spring使用 Spring 上传文件
【发布时间】:2011-05-11 09:15:33
【问题描述】:

我正在将多个 Excel 文件上传到服务器。对于文件,我使用 CommonsMultiPartFile 类。我的问题是,当我尝试处理上传的文件时

  File KUStiedosto = new File(form.getKUS().getOriginalFilename());
          form.getKUS().transferTo(KUStiedosto);


            Workbook KUStk = Workbook.getWorkbook(KUStiedosto);
            Sheet KUSl = KUStk.getSheet(0);
            for (int r = 7; r < KUSl.getRows() - 1; r++) {

我明白了

java.io.FileNotFoundException: 2601401KUS1007.xls (Access is denied)
    java.io.FileOutputStream.open(Native Method)
    java.io.FileOutputStream.<init>(FileOutputStream.java:179)
    java.io.FileOutputStream.<init>(FileOutputStream.java:131)
    org.apache.commons.fileupload.disk.DiskFileItem.write(DiskFileItem.java:423)
    org.springframework.web.multipart.commons.CommonsMultipartFile.transferTo(CommonsMultipartFile.java:137)
    fi.utu.seurantaraporttisuodatin.service.Kustannusraportti.calculateKUS(Kustannusraportti.java:27)
    fi.utu.seurantaraporttisuodatin.service.Raportti.createReportContext(Raportti.java:424)
    fi.utu.seurantaraporttisuodatin.controller.FormController.onSubmit(FormController.java:68)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

我与我的服务器权限有什么关系,或者还有其他什么原因?我正在使用 Netbeans 和连接到它的 Tomcat 服务器。

【问题讨论】:

  • 你找到解决办法了吗?

标签: spring file-upload


【解决方案1】:

您必须向运行服务器(tomcat?)的用户授予您放置文件的文件夹的写入权限。

【讨论】:

  • @mjgirl 你的机器。这取决于是windows还是linux。如果您对操作系统的东西不满意,最好由管理员来完成。或在 serverfault.com 上询问
  • 所以不是TomCat自己的文件?我正在使用 Windows 7
【解决方案2】:

当您调用CommonsMultipartFile.transferTo() 时,您传递的是对File 位置的引用,它应该将上传的文件写入该位置。但是,您的 tomcat 服务器没有对该文件的写入权限。

您需要找出运行 Tomcat 的用户,并确保该用户对该文件位置具有写入权限。

【讨论】:

    【解决方案3】:

    我在我的 Windows 7 机器中遇到了这个问题。这主要是因为访问限制。

    你有两个选择:

    1. 我可以将文件写入我的 桌面虽然。尝试写入文件 到您的桌面检查是否 你的代码有效。
    2. 以管理员身份运行 Tomcat。复制战争到你的tomcat webapps 文件夹。键入 Windows 键 并搜索 cmd。右键单击 cmd.exe 并将其运行为 行政人员。现在导航到 Tomcat的bin文件夹并运行 启动.bat。现在您可以将文件保存在任何位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-09
      • 2013-04-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多