Asp.net 允许用户下载位于特定IIS文件夹中的文件

Asp.net 允许用户下载位于特定IIS文件夹中的文件,asp.net,iis,Asp.net,Iis,我有以下问题:ASP-MVC 我想把一个文件放在IIS的文件夹中,允许浏览我网站的用户下载它 在我的站点中,我将有一个指向控制器中某个操作方法的链接,我希望在该方法中放置所需的代码。以前从未处理过此问题,将通知代码示例。谢谢 此代码取自此代码,将实现您想要的功能 public FileResult Download() { byte[] fileBytes = System.IO.File.ReadAllBytes("c:\folder\myfile.ext"); string

我有以下问题:ASP-MVC 我想把一个文件放在IIS的文件夹中,允许浏览我网站的用户下载它


在我的站点中,我将有一个指向控制器中某个操作方法的链接,我希望在该方法中放置所需的代码。以前从未处理过此问题,将通知代码示例。谢谢

此代码取自此代码,将实现您想要的功能

public FileResult Download()
{
    byte[] fileBytes = System.IO.File.ReadAllBytes("c:\folder\myfile.ext");
    string fileName = "myfile.ext";
    return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}

假设您希望根据传入的ID获取特定文件,则可以使用Controller.file函数,如下所述:

下面是该页面中的控制器函数示例:

public ActionResult ShowFileFN(string id) {
  string mp = Server.MapPath("~/Content/" + id);
  return File(mp, "text/html");
}
这将返回指定MIME内容类型的命名文件的二进制流,在本例中为“text/html”。您需要知道要返回的每个文件的MIME类型

下面是一个根据文件扩展名获取文件MIME类型的函数:

public static string GetMimeType(string fileName)
{
    string mimeType = "application/unknown";
    string ext = System.IO.Path.GetExtension(fileName).ToLower();
    Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext);
    if (regKey != null && regKey.GetValue("Content Type") != null)
        mimeType = regKey.GetValue("Content Type").ToString();
    return mimeType;
}