我有一个asp.net mvc动作,它返回一个文件结果。在幕后,它只是从目录返回一个文件。 FilePathResult需要内容类型,但我不知道。
如果我只有文件的路径可用,那么返回文件结果的正确方法是什么?
答案 0 :(得分:11)
获取文件扩展名,并在注册表中查找。它的条目将具有“内容类型”属性。
以下是从控制器操作返回FilePathResult的完整示例:
string filePysicalPath, fileName; //these need to be set to your values.
var reg = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey( Path.GetExtension( filename ).ToLower() );
string contentType = "application/unknown";
if ( reg != null )
{
string registryContentType = reg.GetValue( "Content Type" ) as string;
if ( !String.IsNullOrWhiteSpace( registryContentType ) )
{
contentType = registryContentType;
}
}
return File( filePysicalPath, contentType, filename );
答案 1 :(得分:0)
这种方法不会在注册表中起作用
private FileResult CreateFileResult(byte[] file, string fileName)
{
var cd = new ContentDisposition
{
FileName = fileName,
Inline = false
};
this.HttpContext.Response.Headers.Add("Content-Disposition", cd.ToString());
return this.File(file, MediaTypeNames.Application.Octet);
}