检查图像是否存在于我的本地资源中

本文关键字:资源 我的 是否 图像 存在 于我的 检查 | 更新日期: 2023-09-27 18:17:17

net/c#应用程序我有一个项目列表

后面的代码:我想从本地资源中为每个项目分配一张图片。项目名称和图片名称相同。这些图片都在我项目的image文件夹中。

给一个项目分配图片的例子:

Item1.PictureUrl = "images/items/" + item1.Name + ".jpg";

我有没有图片的项目。我想为他们指定一个默认的图片。

我试着检查图片是否存在,使用这个:

foreach(ObjectItem item in ListOfItems)
{
    if(File.Exists("images/items/"+item.Name+".jpg"))
            item.PictureUrl = "images/items/"+item.Name+".jpg";
        else
            item.PictureUrl= "images/Default.jpp";
}

但是文件。方法总是返回false,即使图片存在。我还尝试使用'''代替'/',但没有工作

我该怎么做?

感谢您的帮助

检查图像是否存在于我的本地资源中

您需要将相对文件路径转换为物理文件路径。

您将需要使用Server。用于验证文件是否存在的MapPath:

if(File.Exists(Server.MapPath("/images/items/"+item.Name+".jpg")))

同样,当您使用Server。在MapPath中,您通常应该指定前导斜杠,以便请求相对于web应用程序的目录。

如果您不提供前导斜杠,则路径将相对于正在处理的当前页面生成,如果该页位于子目录中,则您将无法进入图像文件夹。

。Net Core Solution

1-把这个写在视图的顶部(在这里注入IHostingEnvironment);

@inject Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnv

2-写入image的位置(做存在检查);

var path = System.IO.Path.Combine(hostingEnv.WebRootPath, "MyFolder", "MyImage.jpg");
if (System.IO.File.Exists(path))
{
    <img class="img-fluid" src="~/MyFolder/MyImage.jpg" alt="">
}
var path = $@"C:'Fotos'Funcionarios'1.Png";
FileInfo file = new FileInfo(path);
if (file.Exists.Equals(true))
{
   //faz algo
}