ASP.NET MVC 应用程序是否可以从 Web 服务器上其他位置的文件夹中读取文件?

Is it possible for an ASP.NET MVC application to read files from a folder elsewhere on the web server?

我有一个 ASP.NET MVC 网络应用程序位于 c:\inetpub\sites\website

在其中,我可以选择下载 PDF 文件。

PDF 文件存储在别处,例如c:\data\pdffiles

如果我使用

设置了正确的权限,我可以从我的网络应用程序中的 c:\data\pdffiles 文件夹中读取吗

IIS APPPOOL{应用程序池名称}

此致

是的,您可以从 ASP.NET MVC 控制器操作中执行此操作,如下所示:

public FileResult Download()
{
    string filePath = @"c:\data\pdffiles\doc.pdf";
    byte[] fileBytes = System.IO.File.ReadAllBytes(filePath);
    string fileName = Path.GetFileName(filePath);

    return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Pdf, fileName);
}

甚至更短 - 如果您不想在下载时覆盖文件名。

public FileResult Download()
{
    string filePath = @"c:\data\pdffiles\doc.pdf";

    return File(filePath, MimeMapping.GetMimeMapping(filePath));
}

如果您需要自定义 MIME 类型,请参阅此答案:

你可以的。为此,您需要在 IIS 中创建虚拟直接到您的网站,然后您可以使用该虚拟直接,您可以将其映射到项目文件夹以外的文件夹