如何正确列出目录的文件?
How to properly list files of a directory?
我一直在使用下面的代码,直到我得到太多图像。所以我想在母版页 cs 文件 class 中创建一个方法来为我生成 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.png
而不是 http:\localhost:5090\images.png
我该怎么做?我也尝试过使用和不使用 ResolveUrl()
但它最终返回类似 C:\images.png
的东西,这显然不是我正在寻找的正确路径。我是 ASP.NET 的新手,我还不知道这些事情通常是如何完成的。我在学习。
试试这个:
HttpContext.Current.Server.MapPath("~/images");
希望对您有所帮助
您有网站的基本路径:Server.MapPath("~");
因此,请将 Server.MapPath("~")
替换为您所有图片路径中的域名。
基本上,您必须回顾一下您最初所做的并复制功能:
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));
}
将 "server URL" 转换为 "browser URL" 的额外步骤的原因是 ~
路径对浏览器没有任何意义。由于您手动将此 HTML 写入响应,因此框架永远没有机会为您翻译该路径。
我一直在使用下面的代码,直到我得到太多图像。所以我想在母版页 cs 文件 class 中创建一个方法来为我生成 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.png
而不是 http:\localhost:5090\images.png
我该怎么做?我也尝试过使用和不使用 ResolveUrl()
但它最终返回类似 C:\images.png
的东西,这显然不是我正在寻找的正确路径。我是 ASP.NET 的新手,我还不知道这些事情通常是如何完成的。我在学习。
试试这个:
HttpContext.Current.Server.MapPath("~/images");
希望对您有所帮助
您有网站的基本路径:Server.MapPath("~");
因此,请将 Server.MapPath("~")
替换为您所有图片路径中的域名。
基本上,您必须回顾一下您最初所做的并复制功能:
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));
}
将 "server URL" 转换为 "browser URL" 的额外步骤的原因是 ~
路径对浏览器没有任何意义。由于您手动将此 HTML 写入响应,因此框架永远没有机会为您翻译该路径。