none
如何将一个aspx页面生成的HTML页面用流写到硬盘上? RRS feed

答案

  • protected void btnDown_Click(object sender, EventArgs e)
    {
        // 1 弹出对话框提示下载文件(不会开新窗口)
        // 2 隐藏路径
        string fPath = Path.Combine(Server.MapPath("Images"), "xxx.htm");
        FileStream fFileStream = new FileStream(fPath, FileMode.Open);
        long fFileSize = fFileStream.Length;
        Context.Response.ContentType = "application/octet-stream";
        Context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(Path.GetFileName(fPath), System.Text.Encoding.UTF8) + "\"");
        Context.Response.AddHeader("Content-Length", fFileSize.ToString());
        byte[] fFileBuffer = new byte[fFileSize];
        fFileStream.Read(fFileBuffer, 0, (int)fFileSize);
        fFileStream.Close();
        Context.Response.BinaryWrite(fFileBuffer);
        Context.Response.End();
    }

    知识改变命运,奋斗成就人生!
    • 已标记为答案 MrYang 2009年6月17日 6:47
    • 取消答案标记 MrYang 2009年6月17日 8:18
    • 已标记为答案 MrYang 2009年6月24日 2:56
    2009年6月16日 8:13
    版主
  • 你Google一下 “C#生成静态页面”(把C#换成你使用的开发语言)


    CC.FENG
    2009年6月17日 9:15
  • 楼主,你好

    如果你仅仅是想将一个aspx文件转化成html页面然后保存,请参考下面的连接。类似的资料比较多,你自己也可以在网上搜搜。

    http://blog.163.com/zxc_mjf/blog/static/2413978200812461130340/
    Microsoft Online Community Support
    2009年6月18日 2:55
  • 如果你要写成文件让用户下载的话。
    Context.Response.AddHeader("Content-Disposition"
    , "attachment; filename=\"
    " + HttpUtility.UrlEncode(Path.GetFileName(fPath), System.Text.Encoding.UTF8) + "
    \""
    );
    这个办法是最好的,如果存储到服务器的话,直接用IO就可以了啊。。

    我的博客,最近新写了一个Windows Mobile 6.5 Widget开发的文章,欢迎捧场
    尽力回答每一个问题,但不代表一定正确,希望初学者能够多自己尝试。。共勉。。:)
    • 已标记为答案 MrYang 2009年6月24日 2:56
    2009年6月19日 10:46
    版主

全部回复

  • 如何将aspx生成的htm页面不用浏览器打开而写到硬盘某个地方

    Response.OutputStream 这个里面有没有此类的方法

    有点类似下载但是却不需要点保存直接下载保存到硬盘上
    2009年6月16日 7:11
  • protected void btnDown_Click(object sender, EventArgs e)
    {
        // 1 弹出对话框提示下载文件(不会开新窗口)
        // 2 隐藏路径
        string fPath = Path.Combine(Server.MapPath("Images"), "xxx.htm");
        FileStream fFileStream = new FileStream(fPath, FileMode.Open);
        long fFileSize = fFileStream.Length;
        Context.Response.ContentType = "application/octet-stream";
        Context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(Path.GetFileName(fPath), System.Text.Encoding.UTF8) + "\"");
        Context.Response.AddHeader("Content-Length", fFileSize.ToString());
        byte[] fFileBuffer = new byte[fFileSize];
        fFileStream.Read(fFileBuffer, 0, (int)fFileSize);
        fFileStream.Close();
        Context.Response.BinaryWrite(fFileBuffer);
        Context.Response.End();
    }

    知识改变命运,奋斗成就人生!
    • 已标记为答案 MrYang 2009年6月17日 6:47
    • 取消答案标记 MrYang 2009年6月17日 8:18
    • 已标记为答案 MrYang 2009年6月24日 2:56
    2009年6月16日 8:13
    版主
  • System.IO就可以了
    【孟子E章】
    • 已标记为答案 MrYang 2009年6月17日 6:47
    • 取消答案标记 MrYang 2009年6月17日 8:18
    2009年6月16日 9:38
    版主
  • 服务器端调用System.IO访问的是服务器端的硬件。客户端浏览器一般只能执行脚本,浏览器一般都限制脚本可以访问的资源。
    MSMVP VC++
    2009年6月16日 16:00
    版主
  • 你好,使用System.IO命名空间可以实现这个功能,请参考

    http://blog.csdn.net/rmak2008/archive/2008/12/16/3531712.aspx
    邹俊才
    • 已标记为答案 MrYang 2009年6月17日 6:47
    • 取消答案标记 MrYang 2009年6月17日 8:18
    2009年6月16日 17:40
    版主
  • 如果写在服务器端的话,用System.IO就可以了,如果写在客户端的话,就用OutPutStream。
    我的博客,最近新写了一个Windows Mobile 6.5 Widget开发的文章,欢迎捧场
    尽力回答每一个问题,但不代表一定正确,希望初学者能够多自己尝试。。共勉。。:)
    2009年6月17日 2:37
    版主
  • a.aspx 在服务器 运行完 发到客户端是 a.html
    我如何在发送之前吧他转成流那?

    2009年6月17日 2:51
  • a.aspx 在服务器 运行完 发到客户端是 a.html
    我如何在发送之前吧他转成流那?

    2009年6月17日 2:51
  • a.aspx 在服务器 运行完 发到客户端是 a.html
    我如何在发送之前吧他转成流那?

    上面不是回答了吗?

    【孟子E章】
    2009年6月17日 3:20
    版主
  •     protected void Button1_Click(object sender, EventArgs e)
        {
            StreamWriter writer = null ;
            FileStream fFileStream =null;
            try
            {
                
    
                // 1 弹出对话框提示下载文件(不会开新窗口)
                // 2 隐藏路径
                string fPath = "F:\\1234.html";
                fFileStream = new FileStream(fPath, FileMode.Create);
    
                writer = new StreamWriter(fFileStream);
                writer.Write(Context.Response.OutputStream);
                //fFileStream.Write("Context.Response.OutputStream");
            }
            catch (IOException ex)
            { }
            finally
            {
                writer.Flush();
                writer.Close();
                fFileStream.Close();
            }
        }
    是写了但是写的不是页面 是一个对象名啊'Context.Response.OutputStream'
    2009年6月17日 3:41
  •  Context.Response.AddHeader("Content-Disposition"
    , "attachment; filename=\"
    " + HttpUtility.UrlEncode(Path.GetFileName(fPath), System.Text.Encoding.UTF8) + "
    \""
    );

    参考这个帖子

    【孟子E章】
    2009年6月17日 5:01
    版主
  • 他那个实例是下载已有的html页面   我说的是  把本页面下载 有点类似 浏览器的另存为 不过是在显示出来时就保存道服务器上 某个文件夹了

    • 已编辑 MrYang 2009年6月17日 8:18
    2009年6月17日 8:17
  • 我觉得lz是不是说生成静态页面?


    CC.FENG
    2009年6月17日 8:26
  • 对 然后保存
    2009年6月17日 8:51
  • 你Google一下 “C#生成静态页面”(把C#换成你使用的开发语言)


    CC.FENG
    2009年6月17日 9:15
  • 楼主,你好

    如果你仅仅是想将一个aspx文件转化成html页面然后保存,请参考下面的连接。类似的资料比较多,你自己也可以在网上搜搜。

    http://blog.163.com/zxc_mjf/blog/static/2413978200812461130340/
    Microsoft Online Community Support
    2009年6月18日 2:55
  • 生成静态网页时把相关连接都生成好, 点过连接会自己需求连接页面的内容的,不需要自己琯程序专门输出, 你只需要把生成HTML的关把好就行了
    知识改变命运,奋斗成就人生!
    2009年6月19日 2:09
    版主
  • 如果你要写成文件让用户下载的话。
    Context.Response.AddHeader("Content-Disposition"
    , "attachment; filename=\"
    " + HttpUtility.UrlEncode(Path.GetFileName(fPath), System.Text.Encoding.UTF8) + "
    \""
    );
    这个办法是最好的,如果存储到服务器的话,直接用IO就可以了啊。。

    我的博客,最近新写了一个Windows Mobile 6.5 Widget开发的文章,欢迎捧场
    尽力回答每一个问题,但不代表一定正确,希望初学者能够多自己尝试。。共勉。。:)
    • 已标记为答案 MrYang 2009年6月24日 2:56
    2009年6月19日 10:46
    版主