2012-01-04 92 views
0

我正在使用java web服務(在tomcat上)。 我有下面的代碼來處理圖片上傳:Webservice上傳的圖像url

public String uploadPicture( long xId, 
           int  pictureIndex, 
           String imageData) 
{ 
    File imageFile = new File(new String("D:\\" + xId + "_" + pictureIndex)); 

    try 
    { 
     FileOutputStream fos    = new FileOutputStream(imageFile); 
     byte[]    encodedImage = Base64.decode(imageData); 

     fos.write(encodedImage); 
     fos.close(); 
     return imageFile.getPath(); 
    } 
    catch(FileNotFoundException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    catch(Base64DecodingException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    catch(IOException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return null; 
} 
  1. 我指定的路徑爲d:\,因爲它是在本地PC上。 但我需要更新它將部署它的服務器上的路徑 - 然後應該將其更改爲〜\ picDir?類似的東西?

  2. WebService的網址:http://192.168.0.11:8080/XWebService/services/XWebService 將被更新,以域名,而不是192.168.0.11 應該用什麼URL來獲取圖像? (例如,如果圖片文件夾爲:〜\ picDir)

回答

2
  1. 如果目標服務器將運行Linux/Unix的,那麼正確的路徑應該是這樣的/ usr /共享/ MYAPP。 '〜\'是完全錯誤的,我猜你的意思是'〜/',它會指向當前用戶的主文件夾。應該避免這種情況,因爲您可能將Web服務器作爲具有不同主目錄的不同用戶運行。通常,在每個環境(開發人員機器,演示,活動服務器)上,您都應該有用於存儲應用程序所需的配置和數據的位置。
  2. 您的圖片的文件系統位置與照片所在的網址無關。它取決於Web Server(Tomcat,Jetty,JBoss等),它將運行你的應用程序和你的應用程序本身。例如,您可以配置Tomcat服務器將域www.myapp.com映射到/ var/lib/tomcat6/webapps/myapp /目錄。將發佈圖像的Servlet可能會從1. =/usr/share/myapp/picDir中提到的配置目錄中獲取它們。如果可以通過/ pictures訪問servlet?picId = 1,那麼您可以在www.myapp.com/pictures?picId=1下找到它們。但是,如果您只是想將靜態圖像放入您的* .war文件以供瀏覽器訪問,請將它們放在* .war文件的根目錄中。

總結:

  1. 選擇(並告訴我們)應用程序服務器
  2. 使用一些配置目錄適用於所有環境和配置您的服務器能夠看到它
  3. 配置您的服務器對於所需的域

您應該閱讀更多關於* .war文件的上下文以及文件本身的組織方式。

諒解例如Tomcat的

的URL和背景假設:

  1. 在本地計算機所需的servlet位於:http://localhost:8080/myapp/utils/myservlet.html
  2. 您的應用打包爲myapp.war
  3. 遠程Tomcat具有IP 2.2.2.2並且正在端口8080上運行

當您將myapp.war部署到遠程Tomcat到webapps目錄(/ var/lib/tomcat6/webapps)時,它將被解壓縮,您將能夠看到您的servlet在http://2.2.2.2:8080/myapp/utils/myservlet.html之下。通過在Tomcat的服務器中配置您的應用程序。XML可以添加域名,並減少不必要的「myapp」部分稱爲上下文,有效地將URL保存爲http://www.myapp.com/utils/myservlet.html。這是你在生產環境中想要的。這個主題在Tomcat的文檔中有解釋,請參考它。從Web應用程序

訪問文件系統資源如果你想保存或從你的服務器的任何文件,請記住,客戶端(網頁瀏覽器)沒有關於磁盤結構根本思想。瀏覽器使用它(在上傳/下載方面)可以通過服務器這樣的處理請求 - 響應通信模式:

  • 上傳 - 抓住從請求一些字節的內容,並保存爲上服務器文件系統中的文件
  • 下載 - 讀服務器文件系統一些字節的內容和流它作爲響應

正如你可以在這兩種情況下,看到服務器文件系統爲t的內部關注他服務於自己。你可以將它保存在你想要的任何地方您可以從任何位置讀取字節。這就是爲什麼讓MYAPP_CONF(在註釋中提到)從一些預定義的目錄存儲和讀取這些文件是很好的原因。

+0

我正在使用tomcat服務器。圖像由用戶上傳 - 不是靜態的。 – Yoav 2012-01-04 13:44:20

+0

好,我們通常做的是創建一個指向我們配置目錄的環境變量,比如說:MYAPP_CONF =/usr/share/tomcat6/myapp。在開發時,將PC上的MYAPP_CONF指向「D:\」。將picDir放在該目錄下。這樣你將有相同的開發和生產配置。 請記住確保Tomcat看到該變量。 當你需要從servlet訪問一些文件時,使用System.getProperty(「MYAPP_CONF」),瞧。 – 2012-01-04 13:57:32

+0

非常感謝....................... :)但如果我想D/L圖像.....我應該從哪個網址獲得它。我在你的解釋中錯過了這部分 – Yoav 2012-01-04 14:03:50