Chrome不了解.NET创建的编码内容处理文件名

时间:2017-01-23 11:58:47

标签: c# asp.net google-chrome content-disposition

当文件名很长并且包含非ASCII字符时,我遇到了一个有趣的问题。以下是发生的事情:

对于这个例子,我选择了文件名 VeryVeryT = 250°CSuperVeryFreakingVeryWowSoVeryCrazyLongFilenameWithOnlyASingleCrazyWeirdNonAsciiCharacterWhatCouldGoWrong.txt ,它只有一个非ASCII字符。

  1. 如果我通过ASP.NET应用程序下载此文件,则响应中的Content-Disposition标头为:

    内容 - 处置:附件;文件名= “=?UTF-8 2 B 4 VmVyeVZlcnlUPTI1MMKwQ1N1cGVyVmVyeUZyZWFraW5nVmVyeVdvd1Nv?=%0D%0A =?UTF-8 2 B 4 VmVyeUNyYXp5X1NpbmdsZUNyYXp5V2VpcmROb25Bc2NpaUNoYXJhY3Rl?=%0D%0A =?UTF-8 2 B 4 cldoYXRDb3VsZEdvV3Jvbmcuemlw?=”

    < / LI>
  2. 如果我在GMail中给自己发送同一个文件并下载,那么这个标题中的标题如下:

    内容处置:附件;文件名=“=?UTF-8 2 B 4 VmVyeVZlcnlUPSAyNTDCsENTdXBlclZlcnlGcmVha2k =?= =?UTF-8 2 B 4 bmdWZXJ5V293U29WZXJ5Q3JhenlMb25nRmlsZW5hbQ ==?= =?UTF-8 2 B 4 ZVdpdGhPbmx5QVNpbmdsZUNyYXp5V2VpcmROb25Bcw ==?= =?UTF-8 2 B 4 Y2lpQ2hhcmFjdGVyV2hhdENvdWxkR29Xcm9uZy50eHQ =?=“

  3. 在第一种情况下,Chrome无法理解标题并下载一个名为“ Download ”的无扩展名文件。在第二种情况下,它会使用正确的名称下载文件。

    另一方面,Firefox更好地处理了第一种情况,但似乎仍然存在.NET构建的问题。它下载的文件名称为 VeryVeryT = 250°CSuperVeryFreakingVeryWowSo%0d%0a VeryCrazy_SingleCrazyWeirdNonAsciiCharacte%0d%0a rWhatCouldGoWrong.txt

    我的应用程序正在使用System.Net.Mime.ContentDisposition类。这是我写的代码:

    internal static FileStreamResult GetFileStreamResult(Stream fileStream, string fileDownloadName)
        {
            return new FileStreamResult(
                fileStream: fileStream,
                contentType: MIConstants.DefaultEmbeddedFileContentType)
            {
                FileDownloadName = fileDownloadName
            };
        }
    

    这真的是.NET的错误还是我错过了什么?

0 个答案:

没有答案