【发布时间】:2015-08-18 18:37:54
【问题描述】:
我有一个目录C:\Source\SomeDirectory\,其中包含任意数量的.pdf 和.txt 文件。我需要在我的 ASP.NET 网页上显示这些文件,并让它们中的每一个都是可下载的链接,例如:
其中每一个都是 .pdf 或 .txt。
如何为这些文件中的每一个创建链接?我知道他们都将在同一个目录中。我尝试过Returning a file to View/Download in ASP.NET MVC 之类的方法,但这只会返回一个文件?
相反,我需要返回一堆可下载的文件,并在我的页面上为它们提供链接以及其他普通 HTML 元素。我怎样才能做到这一点?
编辑:我已经编写了利用DirectoryInfo(path).GetFiles() 获取这些文件列表的代码。我将每个 fileName 及其 filePath 存储到我的视图模型中的对象列表中,并将其传递到我的视图中。我可以使用这些属性作为参数来进行下载吗?
显示如下:
<ul>
<li><a href="@FileList[0].Path"><@FileList[0].FileName</a></li>
<li><a href="@FileList[1].Path"><@FileList[1].FileName</a></li>
<li><a href="@FileList[2].Path"><@FileList[2].FileName</a></li>
</ul>
【问题讨论】:
-
您需要两个单独的操作结果。您需要一个列出所有文件的视图,并且您需要一个根据某些 URL 参数返回特定文件的操作结果。
-
那么每个“链接”实际上会是一些
ActionResult()调用,返回被点击的一个文件吗? -
正确,基于您在 URL 中传递的一些参数,例如 ID 号或文件名。
-
那么您真正需要做的就是将物理路径转换为虚拟路径。这个问题可能会有所帮助:stackoverflow.com/questions/6081433/…
-
为什么不在链接中指定文件名?只需获取文件的虚拟路径,然后将其设置为链接的 href。完毕。你让这件事变得比需要的困难得多。
标签: c# asp.net-mvc file-io download