2010-11-17 4 views
1

Je télécharge plusieurs fichiers Excel sur un serveur. Pour les fichiers, j'utilise la classe CommonsMultiPartFile. Mon problème est que lorsque je tente de gérer le fichier téléchargé commeTéléchargement de fichiers avec 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++) { 

Je reçois

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) 

Que dois-je faire avec les droits de mon serveur ou est-il quelque chose d'autre aussi? J'utilise Netbeans et un serveur Tomcat attaché à celui-ci.

+0

Avez-vous trouvé une solution? –

Répondre

0

Vous devez donner l'autorisation d'écriture à l'utilisateur exécutant le serveur (tomcat?) Pour le dossier dans lequel vous placez le fichier.

+0

Avez-vous une idée d'où donner ces droits? – mjgirl

+0

'@ mjgirl' votre machine. Cela dépend si Windows ou Linux. Et il vaut mieux que ce soit fait par un administrateur, si vous ne vous sentez pas à l'aise avec les choses du système d'exploitation. Ou demandez sur serverfault.com – Bozho

+0

Ce n'est donc pas le propre fichier de TomCat? J'utilise Windows 7 – mjgirl

0

Lorsque vous appelez CommonsMultipartFile.transferTo(), vous transmettez une référence à un emplacement File dans lequel écrire le fichier téléchargé. Toutefois, votre serveur Tomcat n'a pas d'autorisation d'écriture sur ce fichier.

Vous devez connaître l'utilisateur de Tomcat et vérifier que cet utilisateur dispose d'un accès en écriture à cet emplacement.

0

J'ai eu ce problème dans ma boîte de Windows 7. C'est principalement à cause des restrictions d'accès.

Vous avez 2 options:

  1. je pourrais pu écrire le fichier à mon bureau bien. Essayez d'écrire le fichier sur votre bureau pour vérifier si votre code fonctionne.
  2. Exécutez le Tomcat en tant qu'administrateur. Copiez la guerre dans le dossier webapps de votre tomcat. Tapez Windows Key et recherchez cmd. Cliquez avec le bouton droit sur cmd.exe et exécutez-le en tant qu'administrateur . Maintenant, naviguez jusqu'au dossier bin de Tomcat et exécutez startup.bat. Maintenant, vous pouvez enregistrer le fichier dans n'importe quel emplacement.
Questions connexes