ASP.NET获取远程网页下载到本地文件

原创 2012年03月25日 20:31:29
        通过ASP.NET生成静态文件的文章网上有好多文章,而本站也有不少的相关文章教程,通常ASP.NET生成静态文件的做法是使用文件流读取模板内容,之后替换模板内容中相关关键字,再生成静态文件。本文的做法另类一点,通过URL来生成静态文件,下面来看下是如何实现吧。

创建一个TestWeb.aspx文件,这个文件后台.cs的代码做法步骤如下:

         第1步:先引用如下命令空间

using System;
using System.Net;
using System.IO;
using System.Text;

第2步:创建获取远程URL并生成文件的方法与文件夹不存在则自动建立方法

获取远程URL并生成文件的代码:

/// <summary> 
    /// 生成网页文件 
    /// </summary> 
    /// <param name="url">远程URL</param> 
    /// <param name="filename">生成文件名路径</param> 
    /// <param name="pagecode">目标URL页面编码</param>  
    protected void DownUrltoFile(string url, string filename, string pagecode)
    {

        try
        { //编码 Encoding encode = Encoding.GetEncoding(pagecode); //请求URL 
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); //设置超时(10秒) 
            req.Timeout = 10000;

            this.NotFolderIsCreate(filename); //获取Response 
            HttpWebResponse rep = (HttpWebResponse)req.GetResponse(); //创建StreamReader与StreamWriter文件流对象 

            StreamReader sr = new StreamReader(rep.GetResponseStream(), System.Text.Encoding.Default);
            StreamWriter sw = new StreamWriter(Server.MapPath(filename), false, System.Text.Encoding.Default); //写入内容 
            sw.Write(sr.ReadToEnd()); //清理当前缓存区,并将缓存写入文件 sw.Flush(); 
            //释放相关对象资源 

            sw.Close();
            sw.Dispose();
            sr.Close();
            sr.Dispose();
            Response.Write("生成文件" + filename + "成功");
        }
        catch (Exception ex) { Response.Write("生成文件" + filename + "失败,原因:" + ex.Message); }
    }

以上代码关键知识点,通过HttpWebRequest、HttpWebResponse请求获取远程URL数据,之后使用StreamReader、StreamWriter文件流读写数据写入文件,注意还有编码Encoding。

文件夹不存在则自动建立的代码:

    /// <summary> 
    /// 文件夹不存在则创建 
    /// </summary> 
    /// <param name="filename">文件名所在路径</param>  
    protected void NotFolderIsCreate(string filename)
    {
        string fileAtDir = Server.MapPath(Path.GetDirectoryName(filename));
        if (!Directory.Exists(fileAtDir)) Directory.CreateDirectory(fileAtDir);
    }

下面我们看下如何调用生成文件。

在Page_Load中调用DownUrltoFile()方法,以获取百度首页生成静态文件

protected void Page_Load(object sender, EventArgs e)
    {
        //调用方法  
        this.DownUrltoFile("http://www.baidu.com", "html/baidu.htm", "GB2312");
    }




 

ASP.NET实现文件下载

http://blog.csdn.net/codeshark/article/details/2473664 方式一:TransmitFile实现下载。将指定的文件直接写入 HTTP...

asp.net(c#)从url网络地址下载图片或文件到本地硬盘

ref http://hi.baidu.com/moremoretealy/blog/item/b58d3773e506261c8601b050.htmlasp.net(c#)从url网络地址下载图片...
  • lanisa
  • lanisa
  • 2008年04月03日 15:40
  • 4033

asp.net如何上传或下载文件到远程服务器

如何共享文件夹的话,文件夹必须有写入的权限,可是这样的话局域网内所有的人都可以上传到这个共享目录了? 建议: 这个我正好做过的,呵呵,给你参考 假设有服务器A是web服务器,文件要通过A...

asp.net网页里播放各种视频文件

1.avi格式  代码片断如下:                            2.mpg格式  代码片断如下:               ...

asp.net网页里插入视频文件

1.avi格式 代码片断如下: 2.mpg格式 代码片断如下: ...

asp.net(C#) 下载网页并处理编码

C#下默认的是unicode编码 但是比如,我使用以下代码,从某网站上下载网页,而该网页是Utf-8编码的,这时,显示出来的中文就乱码了。 string sHtml = client.Downlo...

C#编程中(ASP.Net)获取当前网页路径的所有方法集合总结

//获取当前进程的完整路径,包含文件名(进程名)。 string str = this.GetType().Assembly.Location; result: X:\xxx\xxx\xxx....
  • hejisan
  • hejisan
  • 2015年02月03日 01:45
  • 2854

ASP.NET实现将网页内容输出到WORD并下载到本地

个人觉得要实现这个功能如果没有类库提供的几个关键函数,还是比较繁琐的。所以首先介绍几个将要在代码中使用的关键函数和参数,然后再说函数实现、注意问题等。关键函数:1.函数原型:Response.Appe...

用asp.net实现远程获取其他网站页面指定内容

http://www.cnblogs.com/12go/archive/2011/12/14/2287667.html   远程获取网页内容.经过一定的处理和灵活应用,可以开发成成体系网站内容采集...

用asp.net实现远程获取其他网站页面指定内容

远程获取网页内容.经过一定的处理和灵活应用,可以开发成成体系网站内容采集系统.通常也叫做"新闻小偷"一般来说.做内容采集分为如下几个大致的步骤:   1.远程获取页面的全部Html源文本.   2...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET获取远程网页下载到本地文件
举报原因:
原因补充:

(最多只允许输入30个字)