>我有以下问题:ASP-MVC我想将文件放在 IIS 的文件夹中,并允许用户浏览我的网站下载它。
在我的站点中,我将有一个指向控制器中操作方法的链接,在此方法中,我想放置所需的代码。以前从未处理过这个问题,将应用一个代码示例。谢谢!
这段代码取自这个问题,将完成你想要的。
public FileResult Download()
{
byte[] fileBytes = System.IO.File.ReadAllBytes("c:foldermyfile.ext");
string fileName = "myfile.ext";
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
假设你想根据某个传入的 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;
}