使用FileResult下载ASP.NETMVC中任何类型的文件?

使用FileResult下载ASP.NETMVC中任何类型的文件?

有人建议我使用FileResult允许用户从ASP.NETMVC应用程序下载文件。但是,我能找到的唯一例子总是与图像文件有关(指定内容类型Image/jpeg)。

但如果我不知道文件类型呢?我希望用户能够从我的网站的文件区下载几乎任何文件。

我读过一种这样做的方法(参见以前的职位对于代码),这实际上很好,除了一件事:在SaveAs对话框中出现的文件名是从带有下划线的文件路径(文件夹_file.ext)连接起来的。而且,人们似乎认为我应该返回一个FileResult,而不是使用我已经找到的自定义类BinaryContentResult。

有人知道用MVC进行这种下载的“正确”方式吗?

编辑:我得到了答案(下面),但我只是认为,如果其他人感兴趣,我应该张贴完整的工作代码:

public ActionResult Download(string filePath, string fileName){
    string fullName = Path.Combine(GetBaseDir(), filePath, fileName);

    byte[] fileBytes = GetFile(fullName);
    return File(
        fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);}byte[] GetFile(string s){
    System.IO.FileStream fs = System.IO.File.OpenRead(s);
    byte[] data = new byte[fs.Length];
    int br = fs.Read(data, 0, data.Length);
    if (br != fs.Length)
        throw new System.IO.IOException(s);
    return data;}


杨__羊羊
浏览 1144回答 3
3回答

大话西游666

MVC框架本机支持这一点。这个System.Web.MVC.Controller.File控制器提供返回文件的方法。名字,姓名/溪流/列阵.例如,使用文件的虚拟路径,您可以执行以下操作。return File(virtualFilePath, System.Net.Mime.MediaTypeNames.Application.Octet,  Path.GetFileName(virtualFilePath));
打开App,查看更多内容
随时随地看视频慕课网APP