【问题标题】:Not allowed to load local resource from App_Data folder不允许从 App_Data 文件夹加载本地资源
【发布时间】:2015-10-26 03:41:08
【问题描述】:

我需要提供大量需要授权才能下载的 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 时,我看到了:

不允许加载本地资源: file:///B:/Development/MyProject/MyProject.Web/App_Data/SetOne/sampleOne.pdf

如何允许应用程序访问这些文件?

编辑

我还尝试创建一个名为 Pdfs 的新文件夹并将文档移动到此文件夹,但是当我在 chrome 开发工具中查看时,我收到了相同的错误消息。

我需要为此任务实现一个 Http Handler 吗?

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    您的方法适用于 WinForms 应用程序,但不适用于 Web。 downloadPath 应该包含 Url,但不包含文件上的物理路径(如 some.com/pdfs/1.pdf)

    您可以在这种情况下使用Server.MapPath

    【讨论】:

    • 那么,从服务器服务器 PDF 的最佳方式是什么?
    • 您应该将 PDF 文件放到用户可以访问的文件夹中。然后你必须映射服务器路径以获得正确的 URL
    • 我已将 pdf 文件放在 PDF 文件夹中,并编写了名为 download 的 FileResult 方法,这将返回一个文件,但是现在人们可以直接浏览到我的 PDF 文件夹并帮助自己吗?
    • 您可以为用户提供 FTP 网址并访问该文件夹。
    猜你喜欢
    • 1970-01-01
    • 2018-03-16
    • 2021-09-01
    • 2016-10-08
    • 2016-11-04
    • 2014-12-10
    • 1970-01-01
    相关资源
    最近更新 更多