首页 > 编程语言 >ASP.NET获取远程网页下载到本地文件

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

时间:2022-11-27 10:32:31浏览次数:46  
标签:文件 www ASP 网页 URL 生成 NET filename com


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

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

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

using System;

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

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

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

[http://www.xueit.com]

///

<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(),encode); StreamWriter sw
=

new
StreamWriter(Server.MapPath(filename),
false
,encode);
//
写入内容

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。

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

[http://www.xueit.com]

///

<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()方法,以获取百度首页生成静态文件

 

[http://www.xueit.com]

protected

void
Page_Load(
object
sender, EventArgs e) {
//
调用方法


this
.DownUrltoFile(
"
http://www.baidu.com
"
,
"html
/baidu.htm
"
,
"
GB2312
"
); }

因为百度首页是Gb2312编码,所以上面的调用方法输入GB2312。我们来看下生成的效果图:

运行效果图1

生成后文件

 

打开生成的静态文件

怎么样,不错吧。

有了这个方法,可以很简单的通过动态文件URL来生成静态文件了,比如:

新闻资讯表article有一个字段htmlFile,保存资讯文件名的,内容如html/news/20091224-001.html,在后台添加保存文章后,调用方法:

[http://www.xueit.com]

DownUrltoFile( "http://www.xueit.com/show.aspx?pid=1 " , " html/news/20091224-001.html " , " GB2312 " );

其中URL:http://www.xueit.com/show.aspx?pid=1 是动态显示文章,html/news/20091224-001.html是表字段htmlFile预先保存的文件名,这样就可以生成静态文件了。

以上的做法是不使用模板来生成静态文件的方法,只是换个思路来做,有好建议可以上我的站 一起来交流下。

标签:文件,www,ASP,网页,URL,生成,NET,filename,com
From: https://blog.51cto.com/u_15834343/5889763

相关文章

  • ASP.NET获取远程网页下载到本地文件
    通过ASP.NET生成静态文件的文章网上有好多文章,而本站也有不少的相关文章教程,通常ASP.NET生成静态文件的做法是使用文件流读取模板内容,之后替换模板内容中相关关键字,再生成静......
  • System.Net.Mail和System.Web.Mail
    System.Net.Mail是作为System.Web.Mail的替代来发送EMAIL. 1)System.Net.Mailprivate void SendMailByNet(){    MailMessage objMailMessage =......
  • cmd命令行启动、停止IIS,打开iis net start w3svc
    命令行暂停iis:netstopiisadmin命令行启动iis:netstartiisadmin;netstartw3svc注意,启动iis需要执行两个命令,一个是netstartiisadmin,这个是网上最常......
  • .NET 4.0新增命名空间:System.Collections.Concurrent
    集合类的需求总是源源不断,因此,不管是1.0到2.0的泛型,还是3.0到4.0的并行(本文的并行指Concurrent,非Parallel),.NET每个版本总会伴随着一些集合类的增长。由于并行计算现在已......
  • ASP.NET Core教程-Model Binding(模型绑定)
    更新记录转载请注明出处:2022年11月27日发布。2022年11月25日从笔记迁移到博客。模型绑定是什么模型绑定是指:使用来自HTTP请求的值来创建.NET对象的过程。模型绑......
  • Kubernetes调度器
    概况在Kubernetes中,调度(scheduling)指的是确保Pod匹配到合适的节点,以便kubectl能够运行Pod。调度的工作由调度器和控制器协调完成。调度器通过Kubernetes的监测(Watch)......
  • 跨平台网页开发框架ASP.NET Core 7性能大提升,正式支持HTTP/3
     微软跨平台网页开发框架ASP.NETCore即将迎来第7个主要版本,由于.NET7对性能的诸多改善,ASP.NETCore7也同时受益,官方解释,由于.NET7在性能部分的提升,许多方面直接或间接......
  • 微软 .NET 7 正式发布
    IT之家11月9日消息,当地时间11月8日星期二,微软.NETConf在线活动正式开幕。作为微软开源、跨平台开发平台,.NET7现已推出首个正式版,这也代表微软的“统一工作”终......
  • Net6 操作时序数据库influxdb,数据插入查询/增删存储桶
    十年河东,十年河西,莫骑少年穷学无止境,精益求精官方文档:​​https://docs.influxdata.com/influxdb/v2.4/api/​​1、项目详情<ProjectSdk="Microsoft.NET.Sdk"><Property......
  • 受skynet启发的分布式服务端框架设计
    简介不管是RPC还是IPC,本质都是通过某种寻址方式调用另一个工作单元(线程)的函数(subroutine)。此处工作单元可以是主机(host),进程(process),线程(thread)。最终函数将在某......