我在OpenShift服務器上部署了我的Spring MVC應用程序的.war文件。 有每個用戶可以改變那裏的照片。它在我的本地主機上工作,但我需要在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)
幫助請幫助!
你可能想看看[這個問題](http://stackoverflow.com/questions/536228/why-does-getrealpath-return-null-when-deployed-與-A-戰爭文件)。此外,對於映像(或其他持久性數據存儲),將使用數據目錄,最好使用[OPENSHIFT_DATA_DIR環境變量](https://developers.openshift.com/en/managing-filesystem.html# __code_data_code)。 –
@JiriFiala,thanx的答案,但我解決了這個問題的路徑:**/var/lib/openshift/PROJECT_ID/app-root/data/** –