2016-08-20 27 views
0

ASP.NET MVC 4应用程序将文件存储在数据库中并允许下载它们。如何允许通过自动打开下载任何文件类型

Postgres的表dokumarh有两列

其用
  • 内容BYTEA文件内容作为二进制数据公布文件的
    • 文件名的文本名称。

    应用程序允许从浏览器下载文件。下载的文件应该打开该扩展的默认OS应用程序。例如,文档为字,XLS Excel文件,TXT为记事本等

    此功能使用控制器

    实现
     public FileStreamResult ShowDocument(string filename) 
         { 
          var manus = Db.QuerySingle(@" 
    select filename, content 
    from dokumarh 
    where [email protected] 
    ", filename); 
          return new FileStreamResult(new MemoryStream(manus.content), "???") 
          { 
           FileDownloadName = manus.filename 
          }; 
         } 
    

    MVC filestreamresult需要发送参数和内容类型标有“???”

    在上传期间,只有文件名可用;没有内容类型。

    如何指定正确的内容类型?还是有可能只返回文件名而不指定内容类型?或者是否有一个MVC方法,数据库或库可以从文件扩展名中找到内容类型?

  • +1

    您可以使用[MimeMapping](https://msdn.microsoft.com/en-us/library /system.web.mimemapping.aspx)class –

    +0

    啊!我从来不知道它。谢谢 – Shyju

    +0

    @StephenMuecke解决了这个问题。你可以把它写成答案,这样我就可以标记和上传。 – Andrus

    回答

    1

    您可以使用System.Web.MimeMapping的静态GetMimeMapping()方法返回文件名的MIME映射。该类包含含所有已知的扩展和它们相关联的MIME类型

    例如私人字典

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