检查图像是不是存在于我的本地资源中
Posted
技术标签:
【中文标题】检查图像是不是存在于我的本地资源中【英文标题】:Checking if image exist in my local resources检查图像是否存在于我的本地资源中 【发布时间】:2012-01-17 05:15:24 【问题描述】: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,即使图片存在。 我也尝试使用 '\' 而不是 '/' 但没有用
我该怎么做?
感谢您的帮助
【问题讨论】:
【参考方案1】:您需要将相对文件路径转换为物理文件路径才能使 File.Exists 正常工作。
您将需要使用Server.MapPath 来验证文件是否存在:
if(File.Exists(Server.MapPath("/images/items/"+item.Name+".jpg")))
此外,当您使用 Server.MapPath 时,您通常应该指定前导斜杠,以便请求相对于 Web 应用程序的目录。
如果您不提供前导斜杠,则将生成相对于正在处理的当前页面的路径,如果此页面位于子目录中,您将无法访问您的图像文件夹。
【讨论】:
如果您的网站下没有虚拟目录,您应该使用 ~ 而不是 /。见***.com/questions/275781/…【参考方案2】:var path = $@"C:\Fotos\Funcionarios\1.Png";
FileInfo file = new FileInfo(path);
if (file.Exists.Equals(true))
//faz algo
【讨论】:
欢迎来到 Stack Overflow。请用英文写下你的答案,因为 Stack Overflow 是English only site。 关于非英语内容的元讨论:meta.***.com/a/297680/8239061【参考方案3】:.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" >
【讨论】:
以上是关于检查图像是不是存在于我的本地资源中的主要内容,如果未能解决你的问题,请参考以下文章
C#。当我尝试检查用户是不是存在于我的 SQL 数据库中时,我的 Windows 窗体应用程序崩溃