JsonStatham
JsonStatham

Reputation: 10364

Not allowed to load local resource from App_Data folder

I need to server a larger amount of Pdf's which require authorisation in order to be able to download.

I have read that it is advisable to place them in the App_Data folder.

I have created three folders in the App_Data folder:

> SetOne

> SetTwo

> SetThree

I need to pass these files to my view.

Controller

var files = Directory.EnumerateFiles(Server.MapPath("~/App_Data/SetOne"));

return View(files);

View

<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>

Using the above code, I am able to list the contents of the SetOne folder in an unordered list, however when I attempt to view one of the Pdf's I see:

Not allowed to load local resource: file:///B:/Development/MyProject/MyProject.Web/App_Data/SetOne/sampleOne.pdf

How can I allow the application to give access to these files?

edit

I've also tried creating a new folder called Pdfs and moving the documents to this, however I get the same error message when I view in chrome dev tools.

Do I need to implement a Http Handler for this task?

Upvotes: 1

Views: 3212

Answers (1)

Boris Sokolov
Boris Sokolov

Reputation: 1793

Your approach is OK for WinForms application but shouldn't work for Web. downloadPath should contain the Url but not the physical path on the file (like some.com/pdfs/1.pdf)

You could use Server.MapPath for this case

Upvotes: 1

Related Questions