我在MVC 5应用程序中写了一个基本的FilePathResult
来返回一个文件。未正确返回的文件类型为.xlsx
。 PDF's
和其他文件工作正常。
public FilePathResult Download(int? id)
{
var model = db.DisciplineModels.Where(x=>x.Id == id).Include(i=>i.Employee).FirstOrDefault();
string username = model.Employee.FirstName + " " + model.Employee.LastName;
string mimeType = MimeMapping.GetMimeMapping(model.Report_Filename);
string path = string.Format(@"~/Employee Records/{0}/HR/Discipline/{1}", username, model.Report_Filename);
return new FilePathResult(path, mimeType);
}
我的mimeType
将以正确的文件类型application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
返回,文件路径正确(文件位于文件夹中)。一切似乎都运行正常,直到它将文件传递给浏览器进行下载。它作为没有扩展名的文件返回。我没有在这台计算机上安装Office,但这应该重要吗? (它是一台开发机器,不需要办公室)。
有什么想法吗?
答案 0 :(得分:1)
开始编辑
$request = new FacebookRequest( $session, 'GET', '/me?fields=id,name,email' );
$response = $request->execute();
因此,对于您的情况,您可以尝试使用与protected internal virtual FilePathResult File(string fileName, string contentType, string fileDownloadName)
{
return new FilePathResult(fileName, contentType) { FileDownloadName = fileDownloadName };
}
相同的return new FilePathResult(path, mimeType) { FileDownloadName = model.Report_Filename };
结束修改
尝试将以下部分添加到return File(path, mimeType, model.Report_Filename);
:
web.config
答案 1 :(得分:1)
通过将返回类型从FilePathResult
更改为File
,我能够使其按预期运行。
将此return new FilePathResult(path, mimeType);
更改为return File(path, mimeType, model.Report_Filename);
不确定为什么FilePathResult
无效。 (非常感谢任何见解)。