为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
杨__羊羊 2019-06-24 15:58:10
使用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;}
查看完整描述

3 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

MVC框架本机支持这一点。这个System.Web.MVC.Controller.File控制器提供返回文件的方法。名字,姓名/溪流/列阵.

例如,使用文件的虚拟路径,您可以执行以下操作。

return File(virtualFilePath, System.Net.Mime.MediaTypeNames.Application.Octet,  Path.GetFileName(virtualFilePath));


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 1143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信