我建议我使用FileResult允许用户从我的Asp.Net MVC应用程序下载文件。但是我能找到的唯一示例始终与图像文件有关(指定内容类型为image / jpeg)。
但是,如果我不知道文件类型怎么办?我希望用户能够从我网站的文件区域下载几乎所有文件。
我已经读过一种执行此操作的方法(有关代码,请参见上一篇文章),除了一件事外,它实际上可以正常工作:另存为对话框中出现的文件名是通过文件路径与下划线连接的( folder_folder_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;
}
Response.ContentType = MimeMapping.GetMimeMapping(filePath);
从stackoverflow.com/a/22231074/4573839