2017-02-21 36 views
0

Я пытаюсь загрузить файл в спокойную веб-службу Джерси, развернутую на сервере Tomcat, которая принимает загруженные файлы как multipart. Он работает полностью правильно на ОС Windows, но в Linux файл не удается сохранить без исключения, брошенной из следующего метода экономии:Загруженный файл не может быть сохранен без каких-либо исключений, возникших в Java - Jersey

@Consumes(MediaType.MULTIPART_FORM_DATA) 
public Response uploadProductImage(
     @FormDataParam("file") final InputStream uploadedInputStream, 
     @FormDataParam("file") final FormDataContentDisposition cdh, 
     @FormDataParam("file") final FormDataBodyPart body 
) { 
    FileManager fileManager = new FileManager(); 
    String fileName; 

    try { 
     int read = 0; 
     byte[] bytes = new byte[1024]; 
     OutputStream out = new FileOutputStream(new File("/home/files")); 

     while ((read = uploadedInputStream.read(bytes)) != -1) { 
      out.write(bytes, 0, read); 
     } 
     out.flush(); 
     out.close(); 
    } catch (IOException e) { 

     e.printStackTrace(); 
    } 

    return Response.status(Response.Status.CREATED).entity(gson.toJson(cdh.getName())).build(); 
} 

Мультисекционный переменная уже объявлена ​​в файле web.xml, как:

<init-param> 
     <param-name>jersey.config.server.provider.classnames</param-name> 
     <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value> 
    </init-param> 

Как видно из кода, целевой путь «/ home/files».
Я уверен, что путь существует, и я уже пытался изменить владельца целевого файла в группу tomcat и предоставил все разрешения на путь без каких-либо результатов. Я ценю вашу помощь.

+0

* Я уверен, что путь существует * Я бы сомневался, что у вас есть разрешение, если оно существует. Пожалуйста, покажите код, который ловит ваше исключение –

+0

Где и что означает 'uploadedInputStream'? Если он не откроет файл, то отображаемое не будет работать –

+0

Я показываю весь метод в этом обновлении, и поскольку он загружается, файл может не существовать ранее. – MrMisery

ответ

0

Итак, после того, как я выяснил, что ошибка записи файла или ошибки разрешения не выбрасываются в качестве исключений, код будет работать нормально, и в этом случае что может быть сделано для решения этого типа проблемы:

  1. Поскольку путь находится за пределами военного корпуса, он должен быть указан в файле server.xml в каталоге tomcat.
  2. Группа каталогов должна быть такой же, как группа Tomcat, ее можно изменить с помощью команды chgrp в терминале linux.
  3. Права, предоставляемые группе каталогов с помощью команды chmod в linux.