7

net/C# 应用程序我有项目列表。

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

我如何将图片分配给项目的示例:

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";
}

但是 File.Exists 方法总是返回 false,即使图片存在。我也尝试使用 '\' 而不是 '/' 但没有用

我该怎么做?

感谢您的任何帮助

4

3 回答 3

18

您需要将相对文件路径转换为物理文件路径,以便 File.Exists 正常工作。

您将需要使用Server.MapPath来验证文件的存在:

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

此外,当您使用 Server.MapPath 时,您通常应该指定前导斜杠,以便请求相对于 Web 应用程序的目录。

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

于 2011-12-10T01:01:50.147 回答
1

.Net 核心解决方案

1-将其写在您的视图顶部(在此处注入 IHostingEnvironment);

@inject Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnv

2-将其写入图像的位置(进行存在检查);

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="">
}
于 2019-10-23T17:41:57.840 回答
0
var path = $@"C:\Fotos\Funcionarios\1.Png";
FileInfo file = new FileInfo(path);

if (file.Exists.Equals(true))
{
   //faz algo
}
于 2019-06-26T18:34:09.433 回答