检查图像文件是否存在

时间:2015-03-30 08:21:32

标签: c# asp.net-mvc

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

2 个答案:

答案 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);