C# 从文件系统下载文件,无论MVC中的文件类型如何

C# 从文件系统下载文件,无论MVC中的文件类型如何,c#,asp.net-mvc,file,download,C#,Asp.net Mvc,File,Download,我需要从我的控制器方法下载一个文件-可以是任何文件类型。我在Stackoverflow中找到的所有内容都是从数据库下载的,或者文件类型是已知的。根据我目前找到的代码,这是我的代码: public FilePathResult ViewAttachment(string filePath, string fileName) { byte[] fileData = System.IO.File.ReadAllBytes(filePath); string contentType

我需要从我的控制器方法下载一个文件-可以是任何文件类型。我在Stackoverflow中找到的所有内容都是从数据库下载的,或者文件类型是已知的。根据我目前找到的代码,这是我的代码:

public FilePathResult ViewAttachment(string filePath, string fileName)
{
     byte[] fileData = System.IO.File.ReadAllBytes(filePath);
     string contentType = MimeMapping.GetMimeMapping(filePath);

     return File(fileData, contentType, filePath);
}
不幸的是,这在返回文件行中给了我一个错误,即:

无法将类型“System.Web.Mvc.FileConentResult”显式转换为 'System.Web.Mvc.FilePathResult'


例外文本是自解释的

File
方法返回
FileContentResult
的实例,而不是
FilePathResult
(并且
FileContentResult
不从
FilePathResult
继承,因此无法进行显式强制转换)

应该是

public FileContentResult ViewAttachment(string filePath, string fileName)
甚至
ActionResult
作为最常见的类型继承自所有xxResult类型

public ActionResult ViewAttachment(string filePath, string fileName)

例外文本是自解释的

File
方法返回
FileContentResult
的实例,而不是
FilePathResult
(并且
FileContentResult
不从
FilePathResult
继承,因此无法进行显式强制转换)

应该是

public FileContentResult ViewAttachment(string filePath, string fileName)
甚至
ActionResult
作为最常见的类型继承自所有xxResult类型

public ActionResult ViewAttachment(string filePath, string fileName)
假设

 string filePath = "~/App_Data/blogs/";
 string fileName = "myblog.pdf";

 [HttpGet]   
 public FileResult ViewAttachment(string filePath, string fileName)
 {
    var fullpath = Path.Combine(Server.MapPath(filePath), filename );
    return File(fullpath, MimeMapping.GetMimeMapping(fullpath ), "DownloadFileNameHere");
 }
将文件保存在App_Data/blogs项目目录中,并将该文件包含在项目中。单击“在visual studio中显示所有文件”。然后右键单击该文件并从上下文中选择IncludeinProject。我已经屏蔽了我的博客项目文件,但你们可以在下面的屏幕截图中看到需要做什么 假设

 string filePath = "~/App_Data/blogs/";
 string fileName = "myblog.pdf";

 [HttpGet]   
 public FileResult ViewAttachment(string filePath, string fileName)
 {
    var fullpath = Path.Combine(Server.MapPath(filePath), filename );
    return File(fullpath, MimeMapping.GetMimeMapping(fullpath ), "DownloadFileNameHere");
 }
将文件保存在App_Data/blogs项目目录中,并将该文件包含在项目中。单击“在visual studio中显示所有文件”。然后右键单击该文件并从上下文中选择IncludeinProject。我已经屏蔽了我的博客项目文件,但你们可以在下面的屏幕截图中看到需要做什么

如果将返回类型更改为
FileContentResult
,会发生什么?@Slappywag,错误消失了。现在让我试试如果将返回类型更改为
FileContentResult
,会发生什么情况?@Slappywag,错误消失了。现在让我试试,把所有的文字都涂鸦掉需要多长时间?把所有的文字都涂鸦掉需要多长时间?