北天软件工作室
北天软件集网站建设、网站开发、软件开发、网站优化SEO、网站宣传、网站开发成一体的网络公司。北天软件是专业的网站建设、网站开发、设计、制作和网站国际推广、搜索引擎推广的网络公司。口号:考虑企业所需,实现企业所想。JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!   旧版java技术网 | 设为首页 | 文章搜索 | RSS订阅地图
免费使用JavaCMS自助建站系统
  文章搜索:   
初学者园地  javascript  java技术  .Net技术 XML/WebService  数据库技术  web2.0技术  设计模式  设计框架  SEO技术  综合知识
您现在的位置是: 北天软件门户网>>.Net技术>>详细信息
asp.net文章采集+ajax进度条

1、首先建立三个文件

Caiji.aspx--------------------进行采集的主页面
Loading.aspx---------------执行程序的页面
Loading2.aspx-------------显示进度

2、下面这两个页面的前台页面什么也不要写,因为要接收ajax的指令来进行操作。

Loading.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;


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

namespace MyTest.CaiJi
{
/**//// <summary>
/// 执行远程获取文件--prosurfer
/// </summary>
///QQ影院 http://ww.qqvod.cn
public partial class Loading : System.Web.UI.Page
{
public static string reAllListHtml, reAllHtml, htmlAddress;
public static string RelativeWay, RootWay, htmlListLu;
//public static ArrayList alist;//地址列表
public static int getSavedNum, Allcount;

protected void Page_Load(object sender, EventArgs e)
{
//int reint = (int)((SaveCount / AllCount) * 100);
//Random rnd = new Random();rnd.Next(0, 100)
//Response.Write(reint);
string s_flash_add = "", type = "0";
getSavedNum = 0;
if (Request.Params["address"] != null)
{
s_flash_add = Request.Params["address"].ToString();
}
else
{
Response.Write("错误!");
}
if (Request.Params["type"] != null)
{
type = Request.Params["type"].ToString();
}
if (type == "1")
{
//Response.Write("0");
char[] c1 ={ ',' };
ArrayList alist = StringSplitString(s_flash_add, c1);
Allcount = alist.Count;
getSavedNum = 0;
for (int i = 0; i < alist.Count; i++)
{
getflash(alist[i].ToString());
getSavedNum += 1;
}
//getSavedNum = 0;
}
else
{
int reint = (int)((getSavedNum / Allcount) * 100);
Response.Write(reint);
}
}


/**//*****************/

public static ArrayList StringSplitString(string strList, char[] splitchar)
{
ArrayList alist = new ArrayList();
string[] strs = null;
if (strList != null && strList != "")
{
strs = strList.Split(splitchar);
}
if (strs.Length > 0)
{
for (int i = 0; i < strs.Length; i++)
{
alist.Add(strs[i]);
}
return alist;
}
return null;
}


public void getflash(string flashaddress)
{
bool isSave = false;
if (flashaddress != null)
{
//flashAddress = Tohttp(flashAddress);
isSave = SaveFileFromUrl(flashaddress);
}


//if (isSave)
// Label1.Text += url + "成功!<br />";
//else
// Label1.Text += url + "失败!<br />";

}



/**//// <summary>
/// 从文件地址下载文件到本地磁盘--prosurfer
/// </summary>
/// <param name="Url">文件网址</param>
/// <returns></returns>
public bool SaveFileFromUrl(string Url)
{
if (Url.IndexOf(".") == -1)
return false;
string fileExt = Url.Substring(Url.LastIndexOf(".") + 1);
bool Value = false;
WebResponse response = null;
Stream stream = null;

try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);

response = request.GetResponse();
stream = response.GetResponseStream();

if (!response.ContentType.ToLower().StartsWith("text/"))
{
Value = SaveBinaryFile("flashsrc", fileExt, response);
}

}
catch (Exception err)
{
string aa = err.ToString();
}
return Value;
}

/**//// <summary>
/// 将二进制文件保存到磁盘--prosurfer
/// </summary>
/// <param name="fileDirectory">保存的目录flashsrc</param>
/// <param name="fileNameExt">保存的类型</param>
/// <param name="response">网络响应</param>
/// <returns></returns>
private bool SaveBinaryFile(string fileDirectory, string fileNameExt, WebResponse response)
{
bool Value = true;
byte[] buffer = new byte[1024];
string dirpath = Server.MapPath(fileDirectory + "/");
if (Directory.Exists(dirpath) == false)
{
Directory.CreateDirectory(dirpath);
}
try
{
string FileName = dirpath + GetUniquelyString() + "." + fileNameExt;
if (File.Exists(FileName))
File.Delete(FileName);
Stream outStream = System.IO.File.Create(FileName);
Stream inStream = response.GetResponseStream();

int l;
do
{
l = inStream.Read(buffer, 0, buffer.Length);
if (l > 0)
outStream.Write(buffer, 0, l);
}
while (l > 0);

outStream.Close();
inStream.Close();
}
catch
{
Value = false;
}
return Value;
}

/**//// <summary>
/// 获取一个不重复的文件名--prosurfer
/// </summary>
/// <returns></returns>
public static string GetUniquelyString()
{
const int RANDOM_MAX_VALUE = 1000;
string strTemp, strYear, strMonth, strDay, strHour, strMinute, strSecond, strMillisecond;
Random rnd = new Random();
DateTime dt = DateTime.Now;
int rndNumber = rnd.Next(RANDOM_MAX_VALUE);
strYear = YieldRandNum(5);
strMonth = (dt.Month > 9) ? dt.Month.ToString() : "i" + dt.Month.ToString();
strDay = (dt.Day > 9) ? dt.Day.ToString() : "a" + dt.Day.ToString();
strHour = (dt.Hour > 9) ? dt.Hour.ToString() : "n" + dt.Hour.ToString();
strMinute = (dt.Minute > 9) ? dt.Minute.ToString() : "j" + dt.Minute.ToString();
strSecond = (dt.Second > 9) ? dt.Second.ToString() : "n" + dt.Second.ToString();
strMillisecond = dt.Millisecond.ToString();

strTemp = strYear + strDay + strMonth + strHour + strMinute + strSecond + strMillisecond + rndNumber.ToString();
strTemp = strTemp.Replace("1", "q");

return strTemp;

}

/**//// <summary>
/// 产生随机字母--prosurfer
/// </summary>
/// <param name="d"></param>
/// <returns></returns>
public static string YieldRandNum(int d)
{
char[] seed ={ 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'G', 'h', 'H', 'i', 'j', 'J', 'k', 'K', 'L', 'm', 'M', 'n', 'N', 'p', 'P', 'q', 'Q', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z' };
int seed_count = seed.Length;
Random rand = new Random();
StringBuilder sb = new StringBuilder(4);
for (int i = 0; i < d; i++)
sb.Append(seed[rand.Next(0, seed_count)]);
return sb.ToString();
}


/**//***************************************/

}
}

Loading2.aspx.cs

public partial class Loading2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Loading.Allcount != 0)
{
double red = Loading.getSavedNum * 100 / Loading.Allcount;
Response.Write(Convert.ToInt32(red));
}
else
{
Response.Write("1");
}
}


}

在Caiji.aspx前台加上


function gid(id)
{
return document.getElementById?document.getElementById(id):null;
}
var xmlHttp1,xmlHttp2;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp1 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp1 = new XMLHttpRequest();
}
}

function createXMLHttpRequest2() {
if (window.ActiveXObject) {
xmlHttp2 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp2 = new XMLHttpRequest();
}
}
//上传操作
function pollServer(type) {
yincang();
createXMLHttpRequest();
pollServer2();
var flashs = document.getElementById("flashAll").value;
data = "address="+flashs+"&type="+type;
var url = "Loading.aspx";
xmlHttp1.open("POST", url, true);
xmlHttp1.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp1.send(data);
}
//获取进度
function pollServer2() {
createXMLHttpRequest2();
var url = "Loading2.aspx";
xmlHttp2.open("POST", url, true);
xmlHttp2.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp2.onreadystatechange = pollCallback2;
xmlHttp2.send(null);
}

//传送过程返回
function pollCallback2() {
if (xmlHttp2.readyState == 4) {
if (xmlHttp2.status == 200) {
var percent_complete = xmlHttp2.responseText;
var progress = document.getElementById("progress");
var progressPersent = document.getElementById("progressPersent");
progress.style.width = percent_complete + "%";
progressPersent.innerHTML = percent_complete + "%";
if (percent_complete < 100) {
setTimeout("pollServer2()", 3000);
} else {
document.getElementById("complete").innerHTML = "已生成完成!";

}
}
}

}
function yincang()
{
var s = gid("start");
s.removeChild(s.childNodes[0]);
}


function clearBar() {
var progress_bar = document.getElementById("progressBar");
var progressPersent = document.getElementById("progressPersent");
var complete = document.getElementById("complete");
progress_bar.style.visibility = "visible"
progressPersent.innerHTML = " ";
complete.innerHTML = "开始生成!";
}
function next()
{
__doPostBack('Go','');
}

在正文内<textarea id="flashAll" name="flashAll" cols="200" rows="20"><%=reflashaddresses%></textarea><br />
<form id="form1" runat="server" >
<div>结果:<asp:Label
ID="Label1" runat="server" Text=""></asp:Label><br />

获取列表页面:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="下一步" OnClick="Button1_Click" />
<asp:Panel runat="server" ID="Panel1" Visible="false">
开始循环标记:<asp:TextBox Text="" TextMode="MultiLine" runat="server" ID="TextBox2"></asp:TextBox><br />
结束循环结束:<asp:TextBox Text="" TextMode="MultiLine" runat="server" ID="TextBox3"></asp:TextBox><br />
<asp:Button ID="Button3" runat="server" Text="下一步" OnClick="Button3_Click" />
</asp:Panel>
<asp:Panel runat="server" ID="StringDo" Visible="false">
开始标记:<asp:TextBox Text="" TextMode="MultiLine" runat="server" ID="StartUrlString"></asp:TextBox><br />
结束标记:<asp:TextBox Text="" TextMode="MultiLine" runat="server" ID="EndUrlString"></asp:TextBox><br />
<a href="javascript:next();">启 动</a> <asp:LinkButton ID="Go" runat="server" OnClick="Go_Click"></asp:LinkButton>
</asp:Panel>
<br /><span id="start"><a href="javascript:pollServer(1);">生成</a> </span>
</div>
</form>

<div id="progressBar" style="padding:0px;border:solid black 0px;visibility:hidden">
<table width="300" border="0" cellspacing="0" cellpadding="0" align="center" >
<tr>
<td align="center" id="progressPersent" >0%</td>
</tr>
<tr >
<td>
<table width="100%" border="1" cellspacing="0" cellpadding="0" bordercolor="#000000">
<tr>
<td>
<table width="1%" border="0" cellspacing="0" cellpadding="0" bgcolor="#FF0000" id="progress" height="20">
<tr>
<td> </td>
</tr>
</table></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" id="complete"></td>
</tr>
</table>
</div>
<script type="text/javascript">
clearBar();
</script>
<iframe src="Loading.aspx" frameborder="0" scrolling="no" style="display:none;"></iframe>
正文后台

public static string reAllListHtml,reAllHtml,htmlAddress,flashAddress;
public static string RelativeWay, RootWay, htmlListLu;
public static ArrayList alist;//地址列表
public static int getSavedNum;

public static string reflashaddresses ;
protected void Page_Load(object sender, EventArgs e)
{
getSavedNum = 0;
reflashaddresses = "";
}
void f()
{ }

protected void Button1_Click(object sender, EventArgs e)
{
htmlAddress = TextBox1.Text.Trim().ToLower();

RelativeWay = htmlAddress.Substring(0, htmlAddress.LastIndexOf("/")) + "/";//相对路径
RootWay = htmlAddress.Substring(0, htmlAddress.IndexOf("/", 7)) + "/";//根路径

reAllListHtml = GetPageHTML(htmlAddress);
Panel1.Visible = true;
}
public static string Tohttp(string str)
{
if (str.StartsWith("/"))
str = RootWay + str;
if (!str.StartsWith("http://"))
str = RelativeWay + str;
return str;
}

protected void Button3_Click(object sender, EventArgs e)
{
string starstr = TextBox2.Text.Trim();
string endstr = TextBox3.Text.Trim();
alist = Get_fileAddresss(starstr, endstr, reAllListHtml);
Panel1.Visible = false;
StringDo.Visible = true;
}

protected void Go_Click(object sender, EventArgs e)
{
string str = "";
string starstr = StartUrlString.Text.Trim();
string endstr = EndUrlString.Text.Trim();
for (int i = 0; i < alist.Count; i++)
{
reAllHtml = GetPageHTML(alist[i].ToString());
flashAddress = Get_fileAddress(starstr, endstr, reAllHtml);
str += flashAddress + ",";
}
reflashaddresses = str;
Response.Write(reflashaddresses);
}

public static string Get_fileAddress(string startstr, string endstr, string strResult)
{
String temp = "";
int start, stop;

start = strResult.IndexOf(startstr, 0, strResult.Length);
stop = strResult.IndexOf(endstr, 0, strResult.Length);
if (start == -1 || stop == -1)
return null;
temp = strResult.Substring(start + startstr.Length, stop - start - startstr.Length);
return temp;
}

public static ArrayList Get_fileAddresss(string startstr, string endstr, string strResult)
{
ArrayList list = new ArrayList();
int start = 0, stop = 0;
while (start != -1 && stop != -1)
{
start = strResult.IndexOf(startstr, 0, strResult.Length);
if (start == -1)
break;
strResult = strResult.Substring(start + startstr.Length);
stop = strResult.IndexOf(endstr, 0, strResult.Length);
if (stop == -1)
break;
string tempaddress = strResult.Substring(0, stop);
tempaddress = Tohttp(tempaddress);
list.Add(tempaddress);
strResult = strResult.Substring(stop);
}

return list;
}


本文来源:IT传媒网
原文链接:http://www.cniter.com/asp.net-caiji-ajax-tech-10896-1/

关闭窗口 】   【 返回首页
推荐文章
· 在ASP.NET中自动给UR...
· DB2 9和ASP.NET2.0构...
· 在ASP.NET中实现Model...
· ASP.NET2.0下Session...
· ASP.NET最常见错误提示
· ASP.net 做的IP访问限制
· 教程:Asp.net与Xml开...
· Sandcastle介绍:生成....
· ASP.NET 2.0控件处理D...
· ASP.NET中利用VWD操...
· 创建基于ASP.NET的SMT...
· 在asp.net中保持Sessi...
· 在ASP.Net 中实现将...
· 解读 C# 中的正则表达式
· ASP.NET初学者入门最...
· ASP.NET初学者入门最...
· Asp.Net 学习资源列表
· ASP.Net发现安全漏洞...
· jsp,asp+,asp,php运...
· ASP函数收集 - ASE加...
北天软件工作室 粤ICP备06079815号 版权所有©2006-2008
精彩出品 JavaCMS自助建站 (C)2006-2008 www.it3838.com limited.all rights reserved.
Powered by JavaCMS V2.6.0