gpt4 book ai didi

c# - ASP.NET 文件浏览器路径转换

转载 作者:行者123 更新时间:2023-11-30 22:37:38 26 4
gpt4 key购买 nike

我正在开发一个 asp.net 文件浏览器,它递归地遍历文件夹并列出它们的文件和子文件夹。但是,我也想让文件可以下载/查看,但我似乎遇到了问题。我无法正确翻译地址。我有以下配置和代码。

编辑:

问题是创建的链接

Response.Write(space + "<a href=" + "Upload/" + d.Name + ">" + d.FullName + "</a><br/>");

没有正确链接到文件。还有一个我需要解决的额外问题:一些文件名包含空格。

Web.config

<appSettings>
<add key="UploadDirectory" value="~/Upload/"/>
</appSettings>

FileBrowser.aspx.cs

public partial class FileBrowser : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DirectoryInfo di = new DirectoryInfo(Request.MapPath(System.Configuration.ConfigurationManager.AppSettings["UploadDirectory"]));
if (Directory.Exists(di.ToString()))
printDir("", di.ToString());

}

protected void printDir(string space, string dir)
{
DirectoryInfo di = new DirectoryInfo(dir);
foreach (DirectoryInfo d in di.GetDirectories())
{
Response.Write(space + "<a href=" + d.ToString() + ">" + d.ToString() + "</a><br/>");
printDir(space + "&nbsp;&nbsp;&nbsp;&nbsp;", dir + "\\" + d.ToString());
}

foreach (FileInfo d in di.GetFiles())
{
Response.Write(space + "<a href=" + "Upload/" + d.Name + ">" + d.FullName + "</a><br/>");
}
}
}

最佳答案

问题在于,在呈现子文件夹中文件的路径时,您使用的路径类似于“上传/文件名”;这是不正确的。

事实上,您应该尝试从当前的 di 变量中获取目录名称。也就是说,如果您当前正在浏览“上传”文件夹中的“内部”文件夹,您的路径将类似于“上传/内部/文件名”。

这是您需要进行更改的地方:

  Response.Write(space + "<a href=" + "Upload/" + d.Name + ">" + d.FullName + "</a><br/>");

在上面的代码行中,您需要根据 di 变量中的路径动态创建 href URL。执行以下操作:

  1. 获取路径
  2. 获取di路径中“\Upload”后的子串
  3. 用“\”分割上面的子串;这会给你任何子目录。
  4. 使用上述子目录创建文件的新路径。

希望对您有所帮助。

关于c# - ASP.NET 文件浏览器路径转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6410327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com