【问题标题】:How to allow downloading any file type with auto open如何允许使用自动打开下载任何文件类型
【发布时间】:2016-08-20 22:39:49
【问题描述】:

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

Postgres 表 dokumarh 有两列

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

应用程序允许从浏览器下载文件。下载的文件应打开该扩展的默认操作系统应用程序。例如,word 为 doc,excel 为 xls,记事本为 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 文件流结果要求发送参数和内容类型标有“???”

在上传过程中,只有文件名可用;没有内容类型。

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

【问题讨论】:

  • 你可以使用MimeMapping
  • 啊!我从来不知道。谢谢
  • @StephenMuecke 这解决了这个问题。您可以将其写为答案,以便我标记和投票。

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


【解决方案1】:

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

例如

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2013-10-06
    • 2019-12-19
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多