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

发布于 2024-12-20 15:04:56 字数 611 浏览 1 评论 0原文

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

但是 File.Exists 方法始终返回 false,即使图片存在。 我也尝试使用“\”而不是“/”,但没有成功

我该怎么办?

感谢您的帮助

net/C# application I have list of items.

In the code behind:
I want to assign a picture from my local resources for each item. the items name and the picture names are the same.
The pictures are all in a "image" folder in my project.

Example of how I assign a picture to an item:

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

I have items that don't have pictures. I want to assign for them a default picture.

I tried to check if the picture exists using this:

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

But the File.Exists method is always returning false, even if the picture exist.
I also tried to use '\' instead of '/' but didn't work

How can I do it?

Thank you for any help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夏末染殇 2024-12-27 15:04:56

您需要将相对文件路径转换为物理文件路径才能使 File.Exists 正常工作。

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

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

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

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

You need to convert the relative file path into a physical file path in order for File.Exists to work correctly.

You will want to use Server.MapPath to verify the existence of the file:

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

Also, when you use Server.MapPath, you should usually specify the leading slash so that the request is relative to the web application's directory.

If you don't provide the leading slash, then the path will be generated relative to the current page that is being processed and if this page is in a subdirectory, you will not get to your images folder.

薄暮涼年 2024-12-27 15:04:56

.Net Core 解决方案

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

.Net Core Solution

1- Write this at the top of your View (Injecting IHostingEnvironment here);

@inject Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnv

2- Write this to the place of image(Doing existence check);

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="">
}
许你一世情深 2024-12-27 15:04:56
var path = $@"C:\Fotos\Funcionarios\1.Png";
FileInfo file = new FileInfo(path);

if (file.Exists.Equals(true))
{
   //faz algo
}
var path = $@"C:\Fotos\Funcionarios\1.Png";
FileInfo file = new FileInfo(path);

if (file.Exists.Equals(true))
{
   //faz algo
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文