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

时间:2014-11-18 18:38:02

标签: asp.net iis

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

在我的网站中,我将有一个指向控制器中的操作方法的链接,在此方法中我想放置所需的代码。以前从未处理过这个问题,会批评代码示例。谢谢!

2 个答案:

答案 0 :(得分:0)

此代码取自此question,可实现您的目标。

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);
}

答案 1 :(得分:0)

假设您想根据某些传入的ID获取特定文件,您可以使用Controller.File函数,如下所述:http://msdn.microsoft.com/en-us/library/dd492492(v=vs.100).aspx

这是该页面的示例控制器功能:

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