2016-02-02 60 views
1

我在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) 

幫助請幫助!

+0

你可能想看看[這個問題](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)。 –

+0

@JiriFiala,thanx的答案,但我解決了這個問題的路徑:**/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>標籤。 之後,我能得到我的照片throught 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