我的目录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
存储到我的viewmodel中的对象列表中,并将其传递到我的视图中。我可以使用这些属性作为参数来进行下载吗?
显示如下:
<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>
答案 0 :(得分:2)
我最终做的是在IIS中向我的Web应用程序的根目录添加虚拟目录。我将其称为TestClassicWeb
并将其路径设置为具有文件的本地目录。
有关从页面获取文件的帮助,请参阅以下内容:
<强>型号:强>
public class DisplayViewModel
{
public List<DownloadableFile> FileList{ get; set; }
}
public class DownloadableFile
{
public string FileName { get; set; }
public string Path { get; set;}
}
<强>控制器:强>
using System.Collections.Generic; //for "List" type
using System.IO; //GetFiles()
/* ... */
//identify the virtual path
string filePath = "/TestClassicWeb/Reports/SethRollins";
//map the virtual path to a "local" path since GetFiles() can't use URI paths
DirectoryInfo dir = new DirectoryInfo(Server.MapPath(quicklinksPath));
//Get all files (but not any subdirectories) in the folder specified above
FileInfo[] files = dir.GetFiles()
//iterate through each file, get its name and set its path, and add to my VM
foreach (FileInfo file in files )
{
DownloadableFile newFile = new DownloadableFile();
newFile.FileName = Path.GetFileNameWithoutExtension(file.FullName); //remove the file extension for the name
newFile.Path = filePath + file.Name; //set path to virtual directory + file name
vm.FileList.Add(newFile); //add each file to the right list in the Viewmodel
}
return (vm);
查看:强>
<ul>
@foreach (DownloadableFile file in Model.FileList)
{
<li><a target="_blank" href="@file.Path">@file.FileName</a></li>
}
</ul>
感谢评论中的帮助!
答案 1 :(得分:0)
如评论中所述,您可以将绝对路径转换为虚拟路径, 您也可以设置下载属性以供下载
<a href="/images/myw3schoolsimage.jpg" download>
根据W3School
download属性指定当用户单击超链接时将下载目标。
仅当设置了href属性时才使用此属性。
属性的值将是下载文件的名称。允许值没有限制,浏览器会自动检测正确的文件扩展名并将其添加到文件中(.img,.pdf,.txt,.html等)。
如果省略该值,则使用原始文件名。
虽然这是有限的,因为有些浏览器不完全支持它。