【问题标题】:Get files in a folder获取文件夹中的文件
【发布时间】:2011-01-03 15:19:09
【问题描述】:

在我的 MVC 应用程序中,我有以下路径;

  • /content/images/full
  • /content/images/thumbs

如何在我的 c# 控制器中获取我的 thumbs 文件夹中所有文件的列表?

编辑

Server.MapPath 仍然是最好的方法吗?

我现在有这个DirectoryInfo di = new DirectoryInfo(Server.MapPath("/content/images/thumbs") );,但觉得这不是正确的方法。

MVC 中是否有对此的最佳实践,或者上述方法是否仍然正确?

【问题讨论】:

  • 以上(Server.MapPath)在我看来是正确和可以接受的。

标签: asp.net-mvc file


【解决方案1】:

.NET 4.0 有一个更有效的方法:

Directory.EnumerateFiles(Server.MapPath("~/Content/images/thumbs"));

你会得到一个IEnumerable<string>,你可以在上面迭代视图:

@model IEnumerable<string>
<ul>
    @foreach (var fullPath in Model)
    {
        var fileName = Path.GetFileName(fullPath);
        <li>@fileName</li>
    }
</ul>

【讨论】:

  • 如果您在查找 Server 时遇到问题,请查看此问题:Cannot use Server.MapPath
  • 您能否通过提供指向完整路径的链接来提供这些文件,或者您是否需要一个处理程序?
  • @selectDistinct 不确定您的意思。 Server.MapPath 将虚拟路径转换为物理目录路径。当然,执行代码的进程需要访问该路径的权限。 OP 要求提供文件列表
【解决方案2】:
Directory.GetFiles("/content/images/thumbs")

这会将目录中的所有文件放入一个字符串数组中。

【讨论】:

  • @Daniel 我无法让它工作。它映射在 c:\content\images\thumbs 而不是我的 Web 应用程序级别。
  • 你能提供更多关于你想要做什么的信息吗?听起来您正在尝试将文件路径列表返回到视图。在这种情况下,在视图中尝试使用&lt;%= Server.MapPath(filePath) %&gt;,其中filePath 是本地路径。
  • 哎呀,刚刚注意到Server.MapPath() 实际上将服务器路径转换为文件路径。现在正在寻找其他解决方案...
  • 我发现了这个:stackoverflow.com/questions/3164/… 不过似乎有点脆弱。我可能只是使用Path.GetFileName(file) 获取文件名并在其前面附加虚拟路径。
猜你喜欢
  • 2018-12-14
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-20
  • 1970-01-01
  • 2023-02-22
  • 1970-01-01
相关资源
最近更新 更多