Загрузка файлов с помощью Spring - PullRequest
1 голос
/ 17 ноября 2010

Я загружаю несколько файлов 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 голосов
/ 23 ноября 2010

Когда вы звоните CommonsMultipartFile.transferTo(), вы передаете ссылку на местоположение File, в которое он должен записать загруженный файл.Однако ваш сервер Tomcat не имеет разрешения на запись в этот файл.

Вам необходимо выяснить, от какого пользователя Tomcat выполняется, и убедиться, что у пользователя есть права на запись в эту папку.

0 голосов
/ 05 июля 2011

У меня была эта проблема в моей коробке Windows 7.Это в основном из-за ограничений доступа.

У вас есть 2 варианта:

  1. Хотя я мог бы записать файл на рабочий стол.Попробуйте записать файл на рабочий стол, чтобы проверить, работает ли ваш код.
  2. Запустите Tomcat от имени администратора.Скопируйте войну в папку веб-приложений вашего кота.Введите ключ Windows и найдите cmd.Щелкните правой кнопкой мыши на cmd.exe и запустите его от имени администратора.Теперь перейдите в папку bin Tomcat и запустите startup.bat.Теперь вы можете сохранить файл в любом месте.
0 голосов
/ 23 ноября 2010

Вы должны дать разрешение на запись пользователю, работающему на сервере (tomcat?), Для папки, в которую вы помещаете файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...