高分求助:如何在ASP页面中加入程序让他自己把自己另存为HTML的文件呢?

tutu944 2004-08-04 08:02:31
如题!

分数不够可以再加~提供程序片段或思路也可以!谢啦~

就是我想让ASP在头部有一段程序,主体仍然是该执行的页面,在这个页面被打开后就自动在一个目录下把这个ASP文件运行过后的HTML文件另存下来~

分少了的话我会重新开帖再加!
...全文
262 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jhpxf 2004-08-06
up
回复
wanghr100 2004-08-05
demo.asp

oBao.open("POST","Server.asp?url="+escape(url),false);
->
oBao.open("POST","Server.asp?url="+url,false);
回复
wanghr100 2004-08-05
通过XMLHTTP取得值.

demo.asp
取得当前网址location.href
发送到服务器取处理Server.asp

<% @Language="JavaScript" %>
<body onload="AddDataGet(location.href)">
<%
function OpenDB(sdbname)
{
var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname);
var conn = Server.CreateObject("ADODB.Connection");
conn.Open(connstr);
return conn;
}
//打开数据库.
var oConn = OpenDB("data.mdb");
var sql = "select * from web where id=" + Request("id")
var rs = oConn.Execute(sql);
Response.Write("<table><tr><td>" + rs(0) + "</td></tr><table>");
%>
<script language="JavaScript">
function AddDataGet(url)
{
/*
*--------------- AddDataGet(url) -----------------
* AddDataGet(url)
* 功能:通过XMLHTTP添加数据.相当于Form的Method=Get.
* 参数:url,字符串,发送条件.
* 实例:AddDataGet(url);
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-30 14:46
*--------------- AddDataGet(url) -----------------
*/
var oBao = new ActiveXObject("Microsoft.XMLHTTP");
oBao.open("POST","Server.asp?url="+escape(url),false);
oBao.send();
}
</script>
test
test



Server.asp

取得传递过来的当前网页地址.
通过XMLHTTP取得请求地址的HTML代码.
再利用FSO生成HTML文件.


<% @Language="JavaScript" %>
<%
function GetSource(url)
{
var oXmlHttp = Server.CreateObject("Microsoft.XMLHTTP");
oXmlHttp.open("GET",url, false);
oXmlHttp.send()
var oStream = Server.CreateObject("ADODB.Stream");
if(oStream == null)
Response.Write("您的机器不支持ADODB.Stream.")
else
{
oStream.Type=1;
oStream.Mode=3;
oStream.Open() ;
oStream.Write(oXmlHttp.responseBody);
oStream.Position= 0;
oStream.Type= 2;
oStream.Charset="gb2312";
var result= oStream.ReadText();
oStream.Close();
oStream = null;
return result;
}
}

function Write2File(sFilePath,sText)
{
var ForReading = 1, ForWriting =2, ForAppending =8;
var fso = Server.CreateObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(sFilePath,ForWriting,true);
f.Write(sText);
}
var url = Request("url");
//取得解析后的HTML代码.
var strSource = GetSource(url)
//生成的文件地址.防止重名,可自己加入识别.
var sfilePath = Server.MapPath("ttfile.htm");
//写入文件.
Write2File(sfilePath,strSource);
%>
回复
makay 2004-08-05
执行页面时用FileSystemObject对象生成一个HTML不就可以了,楼主是不是这意思?
回复
boywind 2004-08-05
FSO就能实现吧???
回复
duoduobaba 2004-08-05
你是要保存原来的asp文件还是经服务器解释过返回客户端的文件?
回复
tutu944 2004-08-05
没人知道吗?思路也可以啊~求求大伙了~
回复
tutu944 2004-08-05
谢啦~能实现的话倾尽所有分数感谢楼上大大~
回复
aspczlover 2004-08-05
关键代码如下

<%
'****************************************************************************
'PageName:GetRemoteFiles.asp
'Function:Download the files to Server
'Author:xiaotian
'Last Modified at:2003-3-19
'****************************************************************************

'取得远程文件并保存到本地
Function GetRemoteFiels(RemotePath, LocalPath, FileName)
Dim strBody
Dim FilePath

On Error Resume Next

'取得流
strBody = GetBody(RemotePath)
'取得保存的文件名
if Right(LocalPath, 1) <> "\" then LocalPath = LocalPath & "\"
FilePath = LocalPath & GetFileName(RemotePath, FileName)
'保存文件
if SaveToFile(strBody, FilePath) = true and err.Number = 0 then
GetRemoteFiles = true
else
GetRemoteFiles = false
end if

End Function

'远程获取内容
Function GetBody(url)
Dim Retrieval
'建立XMLHTTP对象
Set Retrieval = CreateObject("Microsoft.XMLHTTP")
With Retrieval
.open "GET", url
.Send
GetBody = .ResponseBody
End With
Set Retrieval = Nothing
End Function

'重组文件名
Function GetFileName(RemotePath, FileName)
Dim arrTmp
Dim strFileExt
arrTmp = Split(RemotePath, ".")
strFileExt = arrTmp(UBound(arrTmp))
GetFileName = FileName & "." & strFileExt
End Function

'将流内容保存为文件
Function SaveToFile(Stream, FilePath)
Dim objStream

On Error Resume Next

'建立ADODB.Stream对象,必须要ADO 2.5以上版本
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 '以二进制模式打开
objStream.Open
objstream.write Stream
objstream.SaveToFile FilePath, 2
objstream.Close()
'关闭对象,释放资源
Set objstream = Nothing

if err.Number <> 0 then
SaveToFile = false
else
SaveToFile = true
end if
End Function
%>
回复
aspczlover 2004-08-05
使用XMLHttp和ADODB.Stream取得文件并保存到本地
http://dev.csdn.net/article/17/17527.shtm
回复
tutu944 2004-08-05
多谢灰豆~我试一下成功的话再加200分!多谢啦~
回复
yixiaook 2004-08-05
<INPUT onclick="window.location = 'view-source:'+ window.location.href" type=button value=查看源文件>
回复
tutu944 2004-08-05
还有应该如何让它按照我想要的方式建静态页面呢?
回复
tutu944 2004-08-05
灰豆大大,你给写的那些弄成功了~我新开帖子给你转分。

同时谢谢aspczlover(执子之手...),我新开帖子给分~

但是灰豆的那个有一点问题,就是那些写入静态页面的代码会再次被写入静态页面中,这样它自己本身就又被写了一次,我正试着改呢~不知道灰豆大大有没有更好的解决办法?
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2004-08-04 08:02
社区公告
暂无公告