簡體   English   中英

Java:如何驗證localhost上的映像文件是否存在

[英]Java: how to verify image file on localhost exists

這讓我瘋狂。 我正在用Java編寫一個Web應用程序,我想要做的就是驗證是否存在保存在Web根目錄下的/ images文件夾中的圖像。

我做過的1,000,000次谷歌搜索似乎表明File.exists(路徑)方法是要走的路。 但由於顯而易見的原因,我不想硬編碼路徑。

在物理上,我正在使用的測試圖像文件存在於我的D驅動器上,比如D:\\ documents \\ images \\ myimage.jpg。 GlassFish是我的本地服務器,當我的應用程序部署時,我不認為我的圖像文件被復制到“GlassFish文件夾”,所以我認為唯一的物理副本是D:驅動器上的那個。

我能得到的唯一方法:

boolean fileExists = new File(somePath).exists();

要返回TRUE,請使用字符串“D:\\ documents \\ images \\ myimage.jpg”。 我所追求的是像exists()這樣的測試,它可能使用一個URL,我可以將其與引用站點根目錄的其他方法或參數結合起來,我可以構建相對於此的URL的其余部分。

任何幫助深表感謝。

由於文檔是Web根目錄,因此您應該能夠使用ServletContext.getRealPath(String)方法。

ServletContext context = servletRequest.getSession().getServletContext();
// Or if you have the servlet instead of request, use this:
// ServletContext = servlet.getServletContext(); // see comment by BalusC
String virtualPath = "/images/myimage.jpg";
String realPath = context.getRealPath(virtualPath);

// realPath will be D:\documents\images\myimage.jpg

http://download.oracle.com/javaee/5/api/javax/servlet/ServletContext.html#getRealPath(java.lang.String)

返回包含給定虛擬路徑的實際路徑的String。 例如,路徑“/index.html”返回服務器文件系統上的絕對文件路徑,該請求將由“ http://host/contextPath/index.html ”提供,其中contextPath是此ServletContext的上下文路徑..

返回的實際路徑將采用適合運行servlet容器的計算機和操作系統的形式,包括正確的路徑分隔符。 如果servlet容器由於任何原因(例如,當從.war存檔提供內容時)無法將虛擬路徑轉換為實際路徑,則此方法返回null。

也許你可以將你的圖像放在war文件中並使用getResourceAsStream來獲取文件?

在這種情況下,路徑將相對於war文件的根目錄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM