我需要从我的控制器方法下载文件 - 可以是任何文件类型。我在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'
答案 0 :(得分:3)
嗯,异常文本是不言自明的。
var obj = JSON.parse(income);
obj.EmployeeContext.travellContextCollection[0]
方法返回File
的实例,而不是FileContentResult
(并且FilePathResult
不会从FileContentResult
继承,因此无法进行显式转换。
应该是
FilePathResult
或甚至public FileContentResult ViewAttachment(string filePath, string fileName)
作为最常见的类型,所有xxResult类型都继承自。
ActionResult
答案 1 :(得分:1)
假设,
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中的所有文件。然后右键单击该文件并从上下文中选择include in project。我已经屏蔽了我的博客项目文件,但您可以在下面的屏幕截图中看到需要完成的操作