【问题标题】:BinaryWrite of MHT file is not treated as MHT by IEIE 不将 MHT 文件的 BinaryWrite 视为 MHT
【发布时间】:2011-03-29 11:28:43
【问题描述】:

我有一个嵌入图像的 MHTML 文件。 MHTML 在服务器上生成,然后我通常会使用 BinaryWrite 传递文件。在转换为 ASCII 并将文件写入磁盘并使用 Response.WriteFile 之后,我也尝试过 Server.Transfer、Response.Write。在任何这些情况下,生成的文件都不会(看起来)被视为 mht 文件。为了设置图像,我尝试了 Content-ID 和 Content-Location。在 IE8 中查看时,图像 URL 显示为 cid:example1。保存到磁盘后打开文件时,它显示为mhtml:file://C:\DocumentsSettings\benjynito\Desktop\output634172401776447258.mht!cid:example1。或者在使用其中一种有效的方法进行浏览时,您会得到mhttp://...output123.mht!cid:example1

Output.MimeType 是 message/rfc822。我也尝试过 application/octet-stream 和 multipart/related。

将文件写入磁盘并使用 Response.Redirect 有效。使用直接 URL 访问文件有效。将文件保存到磁盘然后打开文件即可。

似乎 IE 假设请求的 HTML 结果,而不是破译新的内容类型。但是你可以为动态样式表、脚本等做这样的事情......所以我真的不相信。我看不出任何明显的差异。我刚刚尝试过,BinaryWrite 在 Opera 中运行良好。

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

提前致谢!

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();
}

【问题讨论】:

    标签: c# asp.net iis mhtml


    【解决方案1】:

    我认为您的 Content-Type 和 Content-Disposition 标头不正确。当您将 MHTML 作为静态文件下载时,使用 Fiddler 查看它们的设置。

    尝试一种 multipart/related 和 inline 的配置。 some evidence 这个组合有效。

    【讨论】:

    • 我试试看。我注意到内容长度没有显示在标题下,而是针对我的二进制文件进行了 g-zip 编码,因此我将尝试手动设置该标题。否则标题排列得很好,我已经尝试匹配标题。感谢您的回复。
    • 好吧还没有完全弄清楚,但我怀疑它与我的 mht 文件的格式有关。我已经能够获取一个 IE 生成的 MHT 文件并对其执行 BinaryWrite 并且它可以工作。
    猜你喜欢
    • 2010-11-22
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 2022-11-16
    • 2023-03-10
    相关资源
    最近更新 更多