将文件保存到App_Data文件夹错误

时间:2016-02-04 07:43:44

标签: asp.net asp.net-mvc asp.net-mvc-5

我正在尝试将使用Rotativa生成的pdf文件保存到我的网络应用程序的app_data文件夹中,但是我收到错误:

System.IO.DirectoryNotFoundException: Could not find a part of the path 'E:\www\tsp13amp\website.com\wwwroot\App_Data\Documents\Corps_Profile_userID.pdf'.

我的控制器代码:

var PDF = new Rotativa.ViewAsPdf("ProfilePrint", model) { FileName = "Corps_Profile_" + User.Identity.GetUserId() + "_" + DateTime.Now.ToString("dd-MM-yyyy")};

            var fileName = PDF.FileName;
            byte[] pdfBytearray = PDF.BuildPdf(ControllerContext);

            var fullPath = Path.Combine(Server.MapPath("~/App_Data/Documents/"),fileName +".pdf");
            var byteArray = PDF.BuildPdf(ControllerContext);

            System.IO.File.WriteAllBytes(fullPath, byteArray)

我要做的是将文件存储在App_Data文件夹中,并在数据库中引用该文件,然后将使用该文件的链接,如:

 <a href="~/App_Data/Documents/File.pdf" target="_blank" class="btn btn-primary">Download</a>

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

只是为了使这个官方 - 不要在app_data中存储任何内容,除非你特别指明它将被使用。默认情况下,此文件夹未映射为返回内容,因此您需要一个HttpHandler或特定的东西来提供此文件夹中的文件。如果将它们映射到数据库中的名称,您仍然需要一种方法来返回它们。

您可以更好地创建另一个用于此目的的文件夹。