Я развернул .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!
Возможно, вы захотите посмотреть [этот вопрос] (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). –
@JiriFiala, спасибо за ответ, но я решил эту проблему с этим путем: **/var/lib/openshift/PROJECT_ID/app-root/data/** –