2015-10-25 68 views
1

我需要服务器需要授权才能下载的大量Pdf。不允许从App_Data文件夹加载本地资源

我读过,建议将它们放在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

我怎样才能让应用程序可以给访问这些文件?

编辑

我还试图创建一个新的文件夹,名为PDF和移动文件到这一点,但是我得到同样的错误信息,当我在Chrome浏览器开发工具查看。

我是否需要为此任务实现一个Http处理程序?

回答

1

您的方法对于WinForms应用程序是可以的,但不适用于Web。 downloadPath应包含的文件(如some.com/pdfs/1.pdf)

的地址而不是物理路径,您可以使用Server.MapPath这种情况

+0

那么从服务器到服务器的PDF文件的最佳方式? – JsonStatham

+0

您应该将PDF文件放到用户可访问的文件夹中。然后,您必须映射服务器路径以获取正确的URL –

+0

我已经将PDF文件放在PDF文件夹中,并且我已经编写了FileResult方法,称为下载,这会返回一个文件,但是现在可以让人们直接浏览到我的PDF文件夹和帮助自己? – JsonStatham

相关问题