使用Spring上传文件

时间:2010-11-17 11:58:23

标签: spring file-upload

我正在将多个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服务器。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我在Windows 7的框中遇到过这个问题。其主要原因是访问限制。

您有两个选择:

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