Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 获取文件夹中的文件_Asp.net Mvc_File - Fatal编程技术网

Asp.net mvc 获取文件夹中的文件

Asp.net mvc 获取文件夹中的文件,asp.net-mvc,file,Asp.net Mvc,File,在我的MVC应用程序中,我有以下路径: /内容/图片/完整 /内容/图像/拇指 在我的c#控制器中,我如何获得thumbs文件夹中所有文件的列表 编辑 Server.MapPath仍然是最好的方法吗 我现在有了这个DirectoryInfo di=newdirectoryinfo(Server.MapPath(“/content/images/thumbs”)但我觉得这不是正确的方法 MVC中是否有一个最佳实践,或者上面的说法是否仍然正确 Directory.GetFiles("/conte

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

  • /内容/图片/完整
  • /内容/图像/拇指
在我的c#控制器中,我如何获得thumbs文件夹中所有文件的列表

编辑

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

我现在有了这个
DirectoryInfo di=newdirectoryinfo(Server.MapPath(“/content/images/thumbs”)但我觉得这不是正确的方法

MVC中是否有一个最佳实践,或者上面的说法是否仍然正确

Directory.GetFiles("/content/images/thumbs")

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

.NET 4.0提供了一种更有效的方法:

Directory.EnumerateFiles(Server.MapPath("~/Content/images/thumbs"));
您将获得一个
IEnumerable
,您可以在该视图上进行迭代:

@model IEnumerable<string>
<ul>
    @foreach (var fullPath in Model)
    {
        var fileName = Path.GetFileName(fullPath);
        <li>@fileName</li>
    }
</ul>
@model IEnumerable
    @foreach(模型中的var完整路径) { var fileName=Path.GetFileName(完整路径);
  • @文件名
  • }

@Daniel我无法让它工作。它在c:\content\images\thumbs而不是我的web应用程序级别进行映射。你能提供更多关于你正在尝试做什么的信息吗?听起来像是要将文件路径列表返回到视图。在这种情况下,在视图中,尝试使用
,其中filePath是本地路径。哎呀,刚才注意到
Server.MapPath()
实际上将服务器路径转换为文件路径。现在正在寻找一些其他的解决方案……我发现:虽然看起来有点脆弱。我可能只需要使用
Path.GetFileName(file)
获取文件名,并在其前面附加虚拟路径。在我看来,上述(
Server.MapPath
)是正确且可接受的。如果您在查找服务器时遇到问题,请检查以下问题:您可以通过提供指向完整路径的链接来提供这些文件吗,或者你需要一个处理程序吗?@selectDistinct不知道你的意思。Server.MapPath将虚拟路径转换为物理目录路径。当然,执行代码的进程需要访问此路径的权限。OP要求提供一份文件列表