----》请教星级高手:不用fso自动生成静态页面(html或shtml)的例子!《----

lawdoor 2004-10-19 11:47:45
想禁止服务器fso,但是又想生成静态页面,寻求除fso外的解决方案!
...全文
417 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
serverme 2004-11-09
  • 打赏
  • 举报
回复
up
lawdoor 2004-10-22
  • 打赏
  • 举报
回复
欢迎大家继续讨论!·
lawdoor 2004-10-22
  • 打赏
  • 举报
回复
正像大家所想象的那样:会不会引来一系列的安全隐患??另外那位知道有没有信息管理应用的例子!
alcoholwang 2004-10-20
  • 打赏
  • 举报
回复
使用IISREWRITE软件

urlrewrite的动态页面更易被搜索引擎所搜到。具体你可以搜一下。
其实很简单,比如原本的链接是http://www.abc.com/News.ASP?ID=123
用IIS rewrite写一条规则
RewriteRule /news/(.*).html /News.ASP?ID=$1 [L]

那么你,对外的连接就可以是http://www.abc.com/News/123.html
其实访问的是http://www.abc.com/News.ASP?ID=123


这样根本不用生成什么静态页面
ljupin 2004-10-20
  • 打赏
  • 举报
回复
TO:alexzhang00(三角猫)
受教了

我多数的时候都是用Stream代替xmlhttp来下载其他网站上的文件,你觉得哪个好点,哪个稳定
我测试中xmlhttp有时候不稳定,出现莫名其妙的错误(下载的文件不正常)
qhyan23 2004-10-20
  • 打赏
  • 举报
回复
学习,谢谢
tigerhu76 2004-10-20
  • 打赏
  • 举报
回复
mark,也想知道最好的方法。我发觉好象使用 regsvr32 /u scrrun.dll 后,adodb.stream 也不能用了。
rabbit666 2004-10-19
  • 打赏
  • 举报
回复
用Adodb.Stream的方法不如用XML+XSL了,用XMLDOM吧,也可以生成静态文本
ljupin 2004-10-19
  • 打赏
  • 举报
回复
如上几位所说,用Adodb.Stream可以写文本和二进制文件
但是服务器禁用FSO的话,是否Adodb.Stream还有效,就没测试过了,两者应该没有联系
华之瓯越 2004-10-19
  • 打赏
  • 举报
回复
收藏 〉〉 alexzhang00(三角猫)
DeltaCat 2004-10-19
  • 打赏
  • 举报
回复
看了楼上的老兄, 发现刚才写错了一点

ds.Mode = 2

^_^
wzgme 2004-10-19
  • 打赏
  • 举报
回复
组件:"Adodb.Stream"
有下列方法:
Cancel 方法
   使用方法如下
   Object.Cancel
   说明:取消执行挂起的异步 Execute 或 Open 方法的调用。
Close 方法
   使用方法如下
   Object.Close
   :关闭对像
CopyTo 方法
   使用方法如下
   Object.CopyTo(destStream,[CharNumber])
   说明:将对像的数据复制,destStream指向要复制的对像,CharNumber为可选参数,指要复制的字节数,不选为全部复制。
Flush 方法
   使用方法如下
   Object.Flush
   说明:
LoadFromFile 方法
   使用方法如下
   Object.LoadFromFile(FileName)
   说明:将FileName指定的文件装入对像中,参数FileName为指定的用户名。
Open 方法
   使用方法如下
   Object.Open(Source,[Mode],[Options],[UserName],[Password])
   说明:打开对像,
   参数说明:Sourece 对像源,可不指定
 Mode 指定打开模式,可不指定,可选参数如下:
  adModeRead =1
  adModeReadWrite =3
  adModeRecursive =4194304
  adModeShareDenyNone =16
  adModeShareDenyRead =4
  adModeShareDenyWrite =8
  adModeShareExclusive =12
  adModeUnknown =0
  adModeWrite =2
 Options 指定打开的选项,可不指定,可选参数如下:
  adOpenStreamAsync =1
  adOpenStreamFromRecord =4
  adOpenStreamUnspecified=-1
 UserName 指定用户名,可不指定。
 Password 指定用户名的密码
Read 方法
使用方法如下:
Object.Read(Numbytes)
说明:读取指定长度的二进制内容。
参数说明:Numbytes指定的要读取的找度,不指定则读取全部。

ReadText 方法
使用方法如下:
Object.ReadText(NumChars)
说明:读取指定长度的文本
参数说明:NumChars指定的要读取的找度,不指定则读取全部。

SaveToFile 方法
使用方法如下:
Object.SaveToFile(FileName,[Options])
说明:将对像的内容写到FileName指定的文件中
参数说明:FileName指定的文件
  Options 存取的选项,可不指定,可选参数如下:
   adSaveCreateNotExist =1
   adSaveCreateOverWrite =2

SetEOS 方法
使用方法如下:
Object.setEOS()
说明:
SkipLine 方法
使用方法如下:
Object.SkipLine()
说明:
Write 方法
使用方法如下:
Object.Write(Buffer)
说明:将指定的数据装入对像中。
参数说明:Buffer 为指定的要写入的内容。
WriteText 方法
使用方法如下:
Object.Write(Data,[Options])
说明:将指定的文本数据装入对像中。
参数说明:Data 为指定的要写入的内容。
      Options 写入的选项,可不指定,可选参数如下:
  adWriteChar =0
  adWriteLine =1




有下列属性:
Charset
EOS 返回对像内数据是否为空。

LineSeparator 指定换行格式,可选参数有
 adCR  =13
 adCRLF  =-1
 adLF  =10

Mode 指定或返加模式。

Position 指定或返加对像内数据的当前指针。

Size 返回对像内数据的大小。

State 返加对像状态是否打开。

Type 指定或返回的数据类型,可选参数为:
 adTypeBinary =1
 adTypeText =2
DeltaCat 2004-10-19
  • 打赏
  • 举报
回复
要求 MDAC 2.5+
DeltaCat 2004-10-19
  • 打赏
  • 举报
回复
写个大概:
Dim ds
Set ds = Server.CreateObject("ADODB.STREAM")
ds.Type = 0 '0表示文本 1表示二进制
ds.Mode = 3 '3 为读写模式
ds.Charset = "GB2312" '可以不指定
ds.WriteText 你的静态文件内容 ' 和用FSO没什么区别
ds.Save Server.MapPath("xx.htm"), 2 '2 表示有则覆盖
ds.Close
Set ds = nothing

cnsdn 2004-10-19
  • 打赏
  • 举报
回复
来源:http://www.lunji.com/develop/static.htm
下面的例子是将、index.asp?id=1/index.asp?id=2/index.asp?id=3/这三个动态页面,分别生成index1.htm,index2.htm,index3.htm存在根目录下面:
<%
dim strUrl,Item_Classid,id,FileName,FilePath,Do_Url,Html_Temp
Html_Temp="<UL>"
For i=1 To 3
Html_Temp = Html_Temp&"<LI>"
Item_Classid = i
FileName = "Index"&Item_Classid&".htm"
FilePath = Server.MapPath("/")&"\"&FileName
Html_Temp = Html_Temp&FilePath&"</LI>"
Do_Url = "http://"
Do_Url = Do_Url&Request.ServerVariables("SERVER_NAME")&"/main/index.asp"
Do_Url = Do_Url&"?Item_Classid="&Item_Classid


strUrl = Do_Url
dim objXmlHttp
set objXmlHttp = Server.CreateObject("Microsoft.XMLHTTP")
objXmlHttp.open "GET",strUrl,false
objXmlHttp.send()
Dim binFileData
binFileData = objXmlHttp.responseBody
Dim objAdoStream
set objAdoStream = Server.CreateObject("ADODB.Stream")
objAdoStream.Type = 1
objAdoStream.Open()
objAdoStream.Write(binFileData)
objAdoStream.SaveToFile FilePath,2
objAdoStream.Close()

Next
Html_Temp = Html_Temp&"<UL>"
%>

<%
Response.Write ( "成功生成文件:" )
Response.Write ( "<BR>" )
Response.Write Html_Temp
%>
satans18 2004-10-19
  • 打赏
  • 举报
回复
太平洋下载里面有,我曾经见过
lawdoor 2004-10-19
  • 打赏
  • 举报
回复
兄台,有没有这方面的例子?
DeltaCat 2004-10-19
  • 打赏
  • 举报
回复
只要有写权限就可以了
DeltaCat 2004-10-19
  • 打赏
  • 举报
回复
用 ADODB.STREAM
若白师妹 2004-10-19
  • 打赏
  • 举报
回复
我承认我是是copy来的
众所周知,FileSystemObject组件的强大功能及破坏性是它屡屡被免费主页
提供商(那些支持ASP)的禁用的原因,我整理了一下,本来只找到两种方法,后来
被某人一刺激,硬是想到第三种不为人所知的方法,呵呵,也不知道是不是这样的。

第一种:用RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll(win98路径)来注销该组
件。此方法过于狠毒,属于同归于尽的方法,大家都没得用,是下招

第二种:修改Progid的值,在ASP里调用组件的方式通常是 Set 对象名=Server.
CreateObject("Progid",这时候我们就可以通过修改注册表中的Progid值从达
到禁用该组件的方法。在 开始-运行中敲入regedit,然后找到HKEY_CLASSES_ROO
T\Scripting.FileSystemObject,这时候我们就可以更改该Progid的值了,如改
成Scripting.FileSystemObject8。这样在ASP页里就这样调用了:
<%@ Language=Vbscript%>
<%
Set Fs=Server.CreateObject("Scripting.FileSystemObject8"
%>
(如果你前面没有调用过该组件的话,则无须重启,就可以看到效果了,否则请重
启后看效果。)
这时候我们看看还是用原来的调用方法的结果:
<%@ Language=Vbscript%>
<%
Set Fs=Server.CreateObject("Scripting.FileSystemObject"
%>
这时候的运行结果为:
服务器对象 错误 'ASP 0177 : 800401f3'

Server.CreateObject 失败

/aspimage/testfile2.asp, 行3

800401f3
(OK,达到我们的要求)
该方法由于本人迟了两步,结果就让别人抢着回答了,这样极大的刺激了我,结
果就产生了第三种方法。

第三种:细心的高手们会想,既然能通过修改Progid值来禁用该组件,那Clsid是
否也可以来修改呢?(OK,你想得和我一样)我们知道,除了CreateObject方法以
外,也可以使用一般的<object>标注建立一个组件,我们可以在ASP里面使用HTM
L的<object>标注,以便在网页中加入一个组件。方法是:
<object runat=server id=fs1 scope=page progid="Scripting.FileSystemObj
ect"></object>
Runat表示是在服务端执行,Scope表示组件的生命周期,可以选用Session,Appl
ication或page(表示当前页面,也可缺省)
这种写法对我们没用,还有一种写法是:
<object runat=server id=fs1 scope=page classid="clsid:clsid的值"></obj
ect>
我们也可以通过修改该Clsid的值而禁用该组件,如将注册表中HKEY_CLASSES_RO
OT\Scripting.FileSystemObject\CLSID的值0D43FE01-F093-11CF-8940-00A0C90
54228改成0D43FE01-F093-11CF-8940-00A0C9054229(改了最后面一位),这时候的
写法为:
<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11
CF-8940-00A0C9054229"></object>
看运行结果,没问题,OK。这时候我们再用
<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11
CF-8940-00A0C9054228"></object>
这时候就出错了。

新建一用户:iusr_domain
IIS里设置对应站点的匿名用户IUSR_DOMAIN
CACLS: 设置目录权限

这样FSO可用,但不会影响别人

加载更多回复(4)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧