2010-11-17 33 views
1

我將多個Excel文件上傳到服務器。對於文件,我使用CommonsMultiPartFile類。我的問題是,當我嘗試處理文件上傳類似用Spring上傳文件

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服務器。

+0

您是否找到任何解決方案? – 2015-05-25 02:47:21

回答

0

您必須爲運行服務器的用戶(tomcat?)授予寫權限,以便放置文件的文件夾。

+0

你有什麼想法從哪裏給予這些權利? – mjgirl 2010-11-23 11:16:07

+0

'@ mjgirl'你的機器。這取決於它是Windows還是Linux。如果你對操作系統的東西感覺不舒服,最好由管理員完成。或者詢問serverfault.com – Bozho 2010-11-23 11:44:47

+0

那麼它不是TomCat自己的文件?我正在使用Windows 7 – mjgirl 2010-11-23 11:56:11

0

當您致電CommonsMultipartFile.transferTo()時,您傳遞的是應該寫入上載文件的File位置的引用。但是,您的tomcat服務器對該文件沒有寫入權限。

您需要找出Tomcat運行的是哪個用戶,並確保用戶具有對該文件位置的寫入權限。

0

我在Windows 7中有這個問題。其主要原因是訪問限制。

你有2種選擇:

  1. 我可以能夠將文件寫入我的 桌面雖然。嘗試將文件 寫入桌面,以檢查代碼是否可用 。
  2. 以管理員身份運行Tomcat。將戰爭複製到你的tomcat的 webapps文件夾中。鍵入Windows密鑰 並搜索cmd。右鍵單擊 cmd.exe並將其作爲 管理員運行。現在導航到Tomcat的bin文件夾 並運行 startup.bat。現在,您可以將文件保存在任何位置。