Asp.net mvc MVC未返回正确的文件类型
我在MVC 5应用程序中编写了一个基本的Asp.net mvc MVC未返回正确的文件类型,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我在MVC 5应用程序中编写了一个基本的FilePathResult,以返回一个文件。未正确返回的文件类型是.xlsxPDF的和其他文件工作正常 public FilePathResult Download(int? id) { var model = db.DisciplineModels.Where(x=>x.Id == id).Include(i=>i.Employee).FirstOrDefault(); string username = model.Emp
FilePathResult
,以返回一个文件。未正确返回的文件类型是.xlsx
<代码>PDF的和其他文件工作正常
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,但这很重要吗?(这是一台开发机器,不需要办公室)
有什么想法吗?开始编辑 根据报告: 因此,对于您的情况,您可以尝试使用
返回新的FilePathResult(path,mimeType){FileDownloadName=model.Report\u Filename}代码>与返回文件相同(路径、mimeType、model.Report\u文件名)代码>
结束编辑
尝试将以下部分添加到web.config
:
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".xlsx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
</staticContent>
</system.webServer>
</configuration>
开始编辑
根据报告:
因此,对于您的情况,您可以尝试使用返回新的FilePathResult(path,mimeType){FileDownloadName=model.Report\u Filename}代码>与返回文件相同(路径、mimeType、model.Report\u文件名)代码>
结束编辑
尝试将以下部分添加到web.config
:
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".xlsx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
</staticContent>
</system.webServer>
</configuration>
通过将返回类型从FilePathResult
更改为File
,我能够使其按预期运行
更改此返回新文件路径结果(路径,mimeType)
到返回文件(路径、mimeType、model.Report\u文件名)代码>
不确定为什么FilePathResult
对此不起作用。(非常感谢您提供的任何见解)。通过将返回类型从FilePathResult
更改为File
,我能够使其按预期运行
更改此返回新文件路径结果(路径,mimeType)
到返回文件(路径、mimeType、model.Report\u文件名)代码>
不确定为什么FilePathResult
对此不起作用。(非常感谢您的任何见解)。您在.xlxs
中有输入错误吗?是的,我是说.xlsx。更新了实际的模型。报告.xlsx
文件的\u文件名
值?模型。报告\u文件名
显示为规程\u 20160422T130831.xlsx
您在.xlxs
中有打字错误吗?是的,我是指.xlsx。更新了实际的模型。为.xlsx
文件报告\u文件名
值?模型。报告\u文件名
显示为规程\u 20160422T130831.xlsx
同样的情况也会发生。文件出来时没有任何提示extension@ShawnGavett,原因可能是路径太长了?@Shawn Gavett,尝试返回新的FilePathResult(model.Report_文件名,mimeType)代码>可疑,具有相同文件名(时间戳格式)的pdf
工作正常。嗯,.csv
也不起作用。现在回想起来,我使用响应和memorystream
导出项目中的其他excel文件。我可以用这些代码来完成这项工作。奇怪的是,FilePathResult
无法处理xls、xlsx、csv
文件。如果我这样做,MVC将不知道从哪里获取文件。它将搜索我的应用程序的根级别。尝试了它,它产生了那个错误。同样的事情也发生了。文件出来时没有任何提示extension@ShawnGavett,原因可能是路径太长了?@Shawn Gavett,尝试返回新的FilePathResult(model.Report_文件名,mimeType)代码>可疑,具有相同文件名(时间戳格式)的pdf
工作正常。嗯,.csv
也不起作用。现在回想起来,我使用响应和memorystream
导出项目中的其他excel文件。我可以用这些代码来完成这项工作。奇怪的是,FilePathResult
无法处理xls、xlsx、csv
文件。如果我这样做,MVC将不知道从哪里获取文件。它将搜索我的应用程序的根级别。尝试了它,它产生了那个错误代码>根据(查找文件
方法)。可能在.pdf
浏览器本身能够推断出正确的名称的情况下。与返回新的FilePathResult(path,mimeType){FileDownloadName=model.Report_Filename}相同代码>根据(查找文件
方法)。可能在.pdf
浏览器能够自行推断出正确的名称的情况下。