代码之家  ›  专栏  ›  技术社区  ›  John Hoven

IE不将MHT文件的二进制写入视为MHT

  •  0
  • John Hoven  · 技术社区  · 14 年前

    cid:example1 在IE8中查看时。保存到磁盘后打开文件时,显示为 mhtml:file://C:\Documents Settings\benjynito\Desktop\output634172401776447258.mht!cid:example1 . 或者在浏览时使用你得到的工作方法之一 mhttp://...output123.mht!cid:example1 .

    这个输出.MimeTypeis消息/rfc822。我也尝试过application/octetstream和multipart/related。

    IE似乎假设请求有一个HTML结果,而不是破译新的内容类型。但是对于动态样式表、脚本等,您可以这样做。。。所以我真的不相信。我看不出有什么明显的区别。我刚试过,二进制写在歌剧里很好用。

    如果我真的要担心写到一个临时目录,然后重定向到文件,我会。我只是希望避免清理临时文件。我想做的是不可能的吗?下面是一个编写文件的示例。

    提前谢谢!

    if (response != null && response.Output != null)
    {
        Response.Clear();
        Response.AddHeader("Content-Type", response.Output.MimeType);
        Response.AddHeader("Content-Disposition", "attachment;filename=output" + DateTime.UtcNow.Ticks.ToString(CultureInfo.InvariantCulture) + "." + response.Output.Extension);
    
        // Response.Write( System.Text.Encoding.ASCII.GetString(response.Output.Bytes));
        Response.BinaryWrite(response.Output.Bytes);
    
        //Response.Clear();
        //Server.Transfer("/ISV/Forms/Test/output634172397522707394.mht");
    
        //Response.Clear();
        //Response.WriteFile( Server.MapPath("/ISV/Forms/Test/output634172397522707394.mht"));
    
        Response.Flush();
        Response.End();
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Steven Sudit    14 年前

    我不认为你的内容类型和内容处置标题是正确的。使用Fiddler查看当您将MHTML作为静态文件下载时,它们被设置为什么。

    尝试使用multipart/related类型和inline配置。有 some evidence