2016-02-02 4 views
1

Я развернул .war файл моего приложения Spring MVC на сервере OpenShift. Там каждый пользователь может изменить фотографии. Он работает на моем локальном хосте, но мне нужно загрузить фотографию на сервере OpenShift и поместить путь к каждой фотографии в базу данных. Это мой метод для загрузки файловЗагрузить фотографии в OpenShift. Spring MVC

@RequestMapping(value = "/user/updateinfo", method = RequestMethod.POST) 
public String postAvatar(@RequestParam("file") MultipartFile file, Principal principal) { 
    if (file.isEmpty()) { 
     return "redirect:/user"; 
    } 

    if (!file.isEmpty()) { 
     try { 
      String relativeWebPath = "/resources/avatars/"; 
      String absoluteFilePath = context.getRealPath(relativeWebPath); 
      String name = file.getOriginalFilename(); 
      // String name=file.getOriginalFilename(); 
      System.out.println(absoluteFilePath); 
      String path = absoluteFilePath + "/" + name; 
      File convFile = new File(absoluteFilePath + "/" + name); 
      this.usersService.addUserAvatar(principal.getName(), "/var/lib/openshift/56ae274f0c1e664bf3000158/app-root/data/"+name); 
      System.out.println(convFile.getAbsolutePath()); 
      file.transferTo(convFile); 
      System.out.println("You have uploaded file"); 
      return "redirect:/user"; 
     } catch (Exception e) { 
      e.printStackTrace(); 
      System.out.println("Failed to upload"); 
      return "redirect:/user"; 
     } 
    } 
    return " redirect:/user"; 
} 

Но этот путь не работает. Файл журнала показывает мне это исключение

/var/lib/openshift/56ae274f0c1e664bf3000158/jbossews/null/vr833vqI_wc.jpg 
java.io.FileNotFoundException: null/vr833vqI_wc.jpg (No such file or directory) 

Help pls!

+0

Возможно, вы захотите посмотреть [этот вопрос] (http://stackoverflow.com/questions/536228/why-does-getrealpath-return-null-when-deployed- с-война-файл). Кроме того, для изображения (или другого постоянного хранилища данных) должен использоваться каталог данных, доступ к которому лучше всего использовать с помощью переменной среды OPENSHIFT_DATA_DIR (https://developers.openshift.com/en/managing-filesystem.html# __code_data_code). –

+0

@JiriFiala, спасибо за ответ, но я решил эту проблему с этим путем: **/var/lib/openshift/PROJECT_ID/app-root/data/** –

ответ

1

решили эту проблему, добавив <Context docBase="/var/lib/openshift/PROJECT_ID/app-root/data" path="/data" /> к .openshift/конфигурации/server.xml в <HOST> теге. После этого я мог бы получить свои фотографии через https://appname-domain.rhcloud.com/data/photo.jpg

+0

Spot on, работает отлично. Создал папку под app-root/data и добавил ее в server.xml: Теперь я могу подавайте документы следующим образом: https://www.mydomain.co.uk/documents/invoices/S049952.pdf – Lyndon

Смежные вопросы