MHT

  首先说一下什么是mht格式文件,MHT叫“web单一文件”,就是把网页中包含的图片,CSS文件以及HTML文件全部放到一个MHT文件里面,而且浏览器可以直接读取显示。可以通过ie浏览器将一个网页另存为MHT格式文件体验一下。

  步骤

  1.添加对Microsoft CDO for Windows 2000 Library 这个Com组件的引用,右键工程->添加引用->选择com组件->在菜单中选择该组件。

  2.在前台页面中加一个按钮,用于触发下载。

  3.添加关键代码:

protected void download_Click(object sender, EventArgs e)
    {
string strMhtContent = string.Empty;//存放下载页面的MHT byte[] BytMhtContent = null; try { CDO.Message message = new Message(); ADODB.Stream stream = null; message.MimeFormatted = true; string url = Request.Url.ToString(); message.CreateMHTMLBody(url, CDO.CdoMHTMLFlags.cdoSuppressNone, "", "");//关键代码,将url定位的页面内容转为mht格式 stream = message.GetStream(); stream.Charset = "utf-8";//设置字符格式,和下载页面的格式一致 strMhtContent = stream.ReadText(stream.Size);
       //如果是下载自己工程的页面,可以自己标记要删除的部分,只下载自己想要的部分。当然互联网中的任何一个网页页面都可以删除只是不方便标记 int startIndex = strMhtContent.IndexOf("<!--delete start-->"); int endIndex = strMhtContent.IndexOf("<!--delete end-->"); string sss = strMhtContent.Remove(startIndex, endIndex - startIndex); BytMhtContent = System.Text.Encoding.GetEncoding("gb2312").GetBytes(sss); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Charset = "gb2312"; HttpContext.Current.Response.ClearContent(); HttpContext.Current.Response.ClearHeaders(); Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); HttpContext.Current.Response.ContentType = "application/octet-stream"; HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=fileDown.mht"); Response.BinaryWrite(BytMhtContent); Response.Flush(); message = null; stream.Close(); Response.Clear(); HttpContext.Current.Response.End(); } catch (Exception error) { throw error; } }