如何正确列出目录的文件

本文关键字:文件 何正确 | 更新日期: 2023-09-27 18:34:27

我一直在使用以下代码,直到我得到太多图像。所以我想在母版页 cs 文件类中创建一个方法,而不是为我生成 HTML。

<img src="<%= ResolveUrl("~/images/1.png") %>">

但是只要我得到很多图像,我就编写了此方法来生成 HTML:

public void GenerateSlideItems()
        {
            string[] files = Directory.GetFiles(Server.MapPath("~/images"));
            foreach(string file in files)
            {
                string filename = Path.GetFileNameWithoutExtension(file);
                Response.Write(string.Format(
                                            "<img src='"{0}'"  class='"img-responsive'" alt='"{1}'">",
                                            file, filename));
            }
        }

但是我得到的图像像C:'...'visual studio'project'etc'1.png而不是http:''localhost:5090'images'1.png我该怎么做?我也尝试过有和没有ResolveUrl()但它最终返回了类似 C:'images'1.png 的东西,这显然不是我正在寻找的正确路径。我刚接触 ASP.NET 我还不知道这些事情通常是怎么做的。我在学习。

如何正确列出目录的文件

基本上,您必须回顾最初所做的事情并复制功能:

ResolveUrl("~/images/1.png")

您有一个服务器端文件系统路径,您需要将其转换为 URL。 由于file包含文件名,并且您有一个硬编码路径,从中获取文件,因此您应该能够组合这些值:

var root = "~/images"
string[] files = Directory.GetFiles(Server.MapPath(root));
foreach (var file in files)
{
    var filename = Path.GetFileName(file);
    var filenameWithoutExtension = Path.GetFileNameWithoutExtension(file);
    var serverUrl = string.Format("{0}/{1}", root, filename);
    var browserUrl = ResolveUrl(serverUrl);
    // now you should be able to use browserUrl in your manually-built HTML...
    Response.Write(string.Format(
                                "<img src='"{0}'" class='"img-responsive'" alt='"{1}'">",
                                browserUrl, filenameWithoutExtension));
}
将"服务器 URL"

转换为"浏览器 URL"的额外步骤的原因是~路径对浏览器没有任何意义。 而且由于您手动将此 HTML 写入响应,因此框架永远没有机会为您翻译该路径。

试试这个:

HttpContext.Current.Server.MapPath("~/images");

希望有帮助

你有你网站的基本路径:Server.MapPath("~");

因此,请将Server.MapPath("~")替换为所有图像路径上的域名。