2012-12-14 146 views
0

我試圖在我的webapp外部顯示存儲在本地文件系統中的圖像。 以下問題:Simplest way to serve static data from outside the application server in a Java web application在JSP中顯示文件系統存儲的圖像

編輯:我想文件被外面的web應用導致這些圖片是由網友上傳,如果我把它們裏面的webapp,當我重新部署Web應用程序

我可能會失去他們

但該文件未顯示在網頁上。當我嘗試打開文件:localhost:8080/images/imageName.jpg它給我一個資源不可用的錯誤。

我在server.xml中添加上下文(運行通過量服務器 - > Config-> server.xml中):

........ 
<Context docBase="DMSystemV1.0" path="/DMSystemV1.0" reloadable="true" source="org.eclipse.jst.jee.server:DMSystemV1.0"/> 
     <Context docBase="/Projects/SpringExample/Images" path="/images"/> 
     </Host> 

也是我的web.xml看起來是這樣的:

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/static/*</url-pattern> 
    </servlet-mapping> 
    <servlet> 
    <servlet-name>DMSystem</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>DMSystem</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 

,我想讓它變得顯示的地方:<img src="/images/${imagePath}" alt="Item's image">

Mytomcat是:F:\ SOFTWARE \服務器\ tomcat7 \ tomcat7 雖然圖像文件夾爲:F:\項目\ SpringExample \ Images

圖像路徑是相對於tomcat文件夾?

此外,現在寫我對上傳路徑(在我的上傳servlet中)和server.xml中的下載路徑進行硬編碼,有沒有辦法將它們提供爲配置或設置信息?

+0

*「我試圖顯示存儲在本地文件系統之外的圖像在我的web應用程序之外。」*爲什麼不將圖像包含在Web應用程序中? –

+0

雖然有解決方法,但Web應用程序通常不應/通常不應訪問本地文件系統。您必須編寫攔截請求的內容,從文件系統加載映像並將其返回。 – GreyBeardedGeek

+0

@AndrewThompson:因爲這些圖片是由用戶上傳的,如果我重新部署web應用,它們可能會被刪除 – Sudh

回答

2

最簡單的解決方案是複製圖像並將其提供給您的web-app根目錄。但是,如果這個解決方案並不適合你無論出於何種原因,你總是可以創建一個servlet來「代理」你的形象:

創建一個servlet,它映射到一個路徑,例如:

<servlet-mapping> 
    <servlet-name>imageProxyServlet</servlet-name> 
    <url-pattern>/imagesproxy/*</url-pattern> 
</servlet-mapping> 

然後在您的servlet類上,執行文件IO來讀取您的圖片,然後將其寫入響應。不要忘記設置適當的內容類型,並使用緩衝讀/寫,以避免在圖像很大時丟失內存。

然後,您可以將您的圖像作爲http://mydomain.com/myapp/imagesproxy/something.jpg。對該URL的請求將被髮送到圖像代理服務器小程序

+0

謝謝你看起來像一個可能的解決方案...將嘗試... – Sudh

+0

提示:1)對於沒有標記XML的問題中的XML更漂亮的格式化,使用'<! - language:lang-xml - >'片段。 2)你確定*該代碼片段結構合理嗎?似乎需要關閉''。 –

+0

謝謝它的作品:) – Sudh

相關問題