C# 如何允许下载自动打开的任何文件类型

C# 如何允许下载自动打开的任何文件类型,c#,asp.net,.net,asp.net-mvc,mime-types,C#,Asp.net,.net,Asp.net Mvc,Mime Types,ASP.NET MVC 4应用程序将文件存储在数据库中并允许下载它们 Postgres表dokumarh有两列 filename使用发布的文件的文本名称 内容以二进制数据的形式存储文件内容 应用程序允许从浏览器下载文件。下载的文件应打开该扩展的默认操作系统应用程序。例如,doc代表word,xls代表excel,txt代表记事本等 此功能是使用控制器实现的 public FileStreamResult ShowDocument(string filename)

ASP.NET MVC 4应用程序将文件存储在数据库中并允许下载它们

Postgres表dokumarh有两列

  • filename使用发布的文件的文本名称
  • 内容以二进制数据的形式存储文件内容
应用程序允许从浏览器下载文件。下载的文件应打开该扩展的默认操作系统应用程序。例如,doc代表word,xls代表excel,txt代表记事本等

此功能是使用控制器实现的

        public FileStreamResult ShowDocument(string filename)
        {
           var manus = Db.QuerySingle(@"
select filename, content
from dokumarh 
where filename=@0
", filename);
            return new FileStreamResult(new  MemoryStream(manus.content), "???")
            {
                FileDownloadName = manus.filename
            };
        }
MVC filestreamresult需要已发送的参数和内容类型,标记为“?”

上传时,只有文件名可用;没有内容类型


如何指定适当的内容类型?或者可以只返回文件名而不指定内容类型吗?或者是否有可以从文件扩展名中查找内容类型的MVC方法、数据库或库?

您可以使用的静态
GetMimeMapping()
方法返回文件名的MIME映射。该类包含一个私有字典,其中包含所有已知扩展及其关联的MIME类型

比如说

string fileName = "myfile.pdf";
string MineType = MimeMapping.GetMimeMapping(fileName); // returns "application/pdf"

您可以使用的静态
GetMimeMapping()
方法返回文件名的MIME映射。该类包含一个私有字典,其中包含所有已知扩展及其关联的MIME类型

比如说

string fileName = "myfile.pdf";
string MineType = MimeMapping.GetMimeMapping(fileName); // returns "application/pdf"

你可以用classAh!我从来不知道这件事。Thanks@StephenMuecke这就解决了问题。你可以把它写下来作为答案,这样我就可以打分和投票了。你可以用classAh!我从来不知道这件事。Thanks@StephenMuecke这就解决了问题。你们可以把它写下来作为答案,这样我就可以打分和投票了。