我需要为更大量的Pdf提供服务,这些Pdf需要授权才能下载。
我已经读过,建议将它们放在App_Data
文件夹中。
我在App_Data
文件夹中创建了三个文件夹:
> SetOne
> SetTwo
> SetThree
我需要将这些文件传递给我的视图。
控制器
var files = Directory.EnumerateFiles(Server.MapPath("~/App_Data/SetOne"));
return View(files);
查看
<ul>
@foreach (var fullPath in Model)
{
var fileName = Path.GetFileName(fullPath);
var downloadPath = @Path.GetDirectoryName(fullPath) + "\\" + @fileName;
<li><a href="@downloadPath">@fileName</a></li>
}
</ul>
使用上面的代码,我能够在无序列表中列出SetOne文件夹的内容,但是当我尝试查看其中一个Pdf时,我看到了:
不允许加载本地资源: 文件:/// B:/Development/MyProject/MyProject.Web/App_Data/SetOne/sampleOne.pdf
如何允许应用程序访问这些文件?
修改
我还尝试创建一个名为Pdfs的新文件夹并将文档移动到此文件夹,但是当我在chrome dev工具中查看时,我收到相同的错误消息。
我是否需要为此任务实现Http Handler?
答案 0 :(得分:1)
您的方法适用于WinForms应用程序,但不适用于Web。 downloadPath应包含Url但不包含文件上的物理路径(如some.com/pdfs/1.pdf)
您可以在此案例中使用Server.MapPath