如何允许自动打开

时间:2016-08-20 22:39:50

标签: c# asp.net .net asp.net-mvc mime-types

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

Postgres表dokumarh有两列

  • filename text使用
  • 发布的文件名
  • 将bytea文件内容作为二进制数据。

应用程序允许从浏览器下载文件。下载的文件应该打开该扩展的默认OS应用程序。例如,doc for word,xls for excel,txt for notepad等。

此功能使用控制器

实现
        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方法,数据库或库可以从文件扩展名中找到内容类型?

1 个答案:

答案 0 :(得分:2)

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

例如

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