[英]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
返回包含給定虛擬路徑的實際路徑的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.