为什么我需要 Content/Type 变量?

Why do I need Content/Type variable?

在我的 MVC Core 应用程序中,我的控制器中有一种方法供用户下载我保存的图像,该图像通过在我的视图中单击按钮调用。我不明白为什么我的 return File() 中需要第二个变量“contentType”字符串。如果我输入“application/pdf”而不是“application/jpg”,我仍然可以将图像下载为 .jpg,所以除了需要它之外,拥有它还有什么意义。这个变量有什么意义?

public FileStreamResult Download()
    {
        string filename = "Capture.JPG";
        string filepath = hostingEnvironment.WebRootPath + "\Image";
        string fullName = Path.Combine(filepath, filename);
        return File(new FileStream(fullName, FileMode.Open), "application/pdf", filename);
    }

Flydog的评论很中肯;在声明内容类型时,您会发现最有用或最明显的区别可能是浏览器可能会使用它来根据设置调用不同的行为。如果您将 mp4 视频作为“video/mp4”发送,浏览器可能会在其视口中播放它。如果您发送与“application/octet-stream”相同的文件,它可能会提供另存为。如果您声明一种内容类型而实际上是另一种内容类型,则浏览器可能会忽略您(注意:声明 pdf 是 pdf 或八位字节流都是 reasonable/true。声明它是慢跑不是)。 Content-Disposition 还在服务器中发挥作用,旨在为浏览器提供有关如何处理文件的一些指导..

..但主要我要说的是说出内容类型真相的一个很好的理由(即当它是 pdf 时不要声称它是 jpg)是互操作的口头禅“当它符合标准时,对发送的内容要严格,对接受的内容要宽松”——你正在发送,所以请遵守协议 :)