string serverPath = HttpContext.Current.Server.MapPath("~/web" + event.Image_Url);
var isFileExist = File.Exists(serverPath);
event.Image_Url = /Resources/images/event-images/e1ae04a2-e63f-4831-a5ee-2f0d2713f8a2.png
但它总是给false
,即使文件存在于物理路径上。它来自上面的操作的物理路径如下所示。
serverPath value = D:\Freelance Work\Trunck\Api\web\Resources\images\event-images\e1ae04a2-e63f-4831-a5ee-2f0d2713f8a2.png
但实际上我需要转到web
文件夹。但它会自动获取Api
文件夹,如上所示。如何避免它?为什么需要Api
文件夹?任何帮助都将受到高度赞赏。
注意:我注意到web api
项目也在本地主机上运行。可能就是它的原因。但是我怎么能告诉它获取虚拟路径来自web
项目?
Trunck中的文件夹结构 如下所示。所有都在同一级别。
Trunck --> API
--> Web
--> BLL
答案 0 :(得分:3)
问题是/
字段开头的event.Image_Url
。这导致字符串中的最后一个路径被视为绝对路径。
string serverPath = Path.Combine
( HttpContext.Current.Server.MapPath("~")
, @"..\web\"
, @event.Image_Url.TrimStart('/').Replace('/', '\\')
);
答案 1 :(得分:0)
我认为您需要尝试string path= Server.MapPath("~/web"), serverPath =Path.Combine(path,event.Image_Url)
而不是字符串serverPath = HttpContext.Current.Server.MapPath("〜/ web" + event.Image_Url);