asp无组件上传:其它的ASP常用组件来源: 发布时间:星期四, 2009年2月12日 浏览:269次 评论:0
当你用 ASP 编写服务器端应用时必须依靠 ActiveX 组件来强大 Web 应用功能譬如:你需要连接数据库对数据库进行在线操作等等 上两篇中作者给大家介绍了 AD Rotator、 Database Access 等组件使用思路方法今天我们接着来看看其它些 ASP 常用组件 、 Browser Capabilities 组件众所周知并不是所有浏览器都支持现今 Internet 技术方方面面有些特性某些浏览器支持而另些浏览器却不支持如 : ActiveX Control控件、影像流、动态 HTML、 Flash 以及脚本等使用 ASP Browser Capabilities 组件就能够设计“智能” Web 页以适合浏览器性能格式呈现内容 Browser Capabilities 组件能够创建个 BrowserType 对象该对象提供带有客户端网络浏览器功能介绍说明用户脚本该组件的所以能识别客户浏览器版本等信息主要是当客户浏览器向服务器发送页面请求时会自动发送个 User Agent HTTP 标题该标题是个声明浏览器及其版本 ASCII 串 Browser Capabilities 组件将 User Agent 映射到在文件 Browscap.ini 中所注明浏览器 , 并通过 BrowserType 对象属性来识别客户浏览器若该对象在 browscap.ini 文件中找不到和该标题匹配项那么将使用默认浏览器属性若该对象既未找到匹配项且 browscap.ini 文件中也未指定默认浏览器设置则它将每个属性都设为串 \"UNKNOWN\"在默认情况下 browscap.ini 文件被存放在 WINDOWSSYSTEMINERSRV( 如果是 95/98+PWS4) 或 NTSYSTEM32INERSRV( 如果是 NT) 目录中你可以自己编辑这个文本文件以添加自己属性或者根据最新发布浏览器版本更新文件来修改该文件请看以下 checkCookie 过程使用 BrowserCap 对象 Cookie 属性来判断客户端浏览器是否支持 Cookie并返回信息 : < % Sub checkCookie Set BrowserCap=Server.CreateObject(\"MSWC.BrowserType\") BrowserCap.Cookie=True then response.write \"你浏览器支持 Cookie!\" response.write \"对不起你所使用浏览器不支持 Cookie!\" end end Sub %> 有关 Browser Capabilities 组件详细信息请参见动态网站WebSite设计十 8般武艺 --ASP 篇 (2) 2、 File Access 组件如果你网龄足够大话你定见过“恐龙时代” CGI 留言簿那是 WEB 留言簿最早雏形那时候在基于 Internet WEB 应用中连接服务器后端数据库还十分困难因此留言簿中历史信息并不是同如今样存储在后端数据库中那么这些数据究竟是保存在哪里呢?答案就是“文本文件” CGI 可以将从客户端接收信息写进个存放在服务器端文本文件中该文件可以是 HTML 文件或 TXT 等文件这样就使得员们可以不通过同数据库连接就可以将客户信息保存下来但是写此类 CGI 甚是烦琐下面列出了个此类最简单样本 : #!/usr/local/bin/perl # Perl Location _disibledevent=> } @pairs=split(/&/,$buffer); foreach $pair(@pairs){ ($name,$value)=split(/=/,$pair); $value=~tr/+//; $value=~s/%([a-f A-F 0-9][a-f A-f 0-9])/pack(\"C\",hex($1))/eg; $FORM{$name}=$value;} $file_name=\"guestbook.txt\";#File name #具体内容 open(FILE,\">>$file_name\")||die \"打开文件\"; pr FILE \"记录时间\":$date nn\"; pr FILE \"姓名\":$FORM{\'name\'}\"; pr FILE \"单位\":$FORM{\'company\'}n\"; pr FILE \"电话\":$FORM{\'phone\'} pr FILE \"地址\":$FORM{\'address\'}n\"; pr FILE \"邮编\":$FORM{\'zip\'} pr FILE \"邮件地址\":$FORM{\'email\'}n\"; pr FILE \"返回意见\":$FORM{\'content\'} close (FILE) 大家可以感觉到和 ASP 相比此类 CGI 可读性和易操作性都较差那么你定想问 ASP 是否也能直接在服务器上写文件呢?答案当然是肯定但是聪明朋友可能会想到既然 ASP 同 WEB 数据库连接如此便捷我们又何需再将客户信息写在文本文件中呢 ASP 这个功能岂不是画蛇添足?确对于那些我们常见留言簿、 BBS 等 WEB 应用而言无论是在执行效率还是易用性上我们都不可能再用写文本文件来替代数据库但是在某些 WEB 应用领域里写文本文件既是种规范标准也是种相对数据库而较便捷思路方法如果你对 NT 较熟悉话你定知道 NT 具有非常强大安全机制它可以将几乎所有服务器操作和连接信息自动保存在个后缀名为 .log 文件中其实这种技术也完全可以被运用在 WEB 上用来记录些客户登陆信息下面这段正是利用 ASP 读写文本文件特性在个 WEB BBS 中创建自动记录每个用户发言记录功能 < % Set fs = CreateObject(\"Scripting.FileObject\") ForReading = 1 \'以只读模式打开文件不能对此文件进行写操作 ForAppending = 8 \'打开文件并在文件末尾进行写操作 TristateUseDefault = -2 TristateTrue = -1 TristateFalse = 0 \'-----------写入系统log开始-------- servermap=server.MapPath(\"bbslog\") \'映射系统物理路径 temp=servermap&\"\"&year(date)&month(date)&\"\" \'获取系统物理路径和时间并以此作为log文件存放物理路径 Not fs.FolderExists(temp) then fs.CreateFolder(temp) end \'检测是否存在文件夹否则自动创建 dim syslog dim tempname tempname=date syslog=temp&tempname&\".log\" \'文件名为e:bbslog月份月日.log li=user&\"&\"&Now&\"&\"&Request.ServerVariables(\"REMOTE_ADDR\")&\"&\"&tempfile&\"&\"&letter&\"&\"&title \'log文件记录格式为:用户名&发信时间&用户ip&文件路径&信区&信件标题 fs.FileExists(syslog) then Set ss = fs.OpenTextFile(syslog,ForAppending,true) ss = fs.CreateTextFile(syslog,ForWriting,false) end \'检测log文件是否存在如果存在则追加文件内容反的则直接写文件 ss.WriteLine(li) ss.Close \'-----------log文件写入结束--------- %> 如果你没有完全看懂上面这段就请听作者慢慢道来 File Access 组件提供了可用来访问计算机文件系统思路方法和属性我们可以使用 File Access 组件创建 FileObject 对象以上第句就是利用 File Access 组件创建了个名为 fs 对象例子在对象被创建后你可以通过它访问文件该对象没有属性它唯意义就是创建、打开或读写文本文件 FileObject 对象有两种最常用思路方法种用来创建文件另种是用来打开并读写文本文件 CreateTextFile 思路方法获得你指定文件名并创建该文件它返回个 TextStream 对象你可以用该对象在文件被创建后操作该文件 CreateTextFile 思路方法语法如下 : Set objTextStream=FileObject.CreateTextFile(Filename,[Overwrite],[Unicode]) 下面作者给大家解释下 CreateTextFile 思路方法参数 1、 Filename 包含文件路径名串可以是文件全路径名包括驱动器名和目录名或者也可以只是文件名如果只包含文件名话文件将被创建在站点根目录下 2、 Overwrite 布尔量设置成 False 时可以防止 FileObject 对象在创建个新文件时删除已存在文件该参数是可选如果没有赋值系统默认为 true具有相同文件名已有文件会被删掉 3、Unicode 可选参数布尔值指明是否以 Unicode 或ASCII 文件格式创建文件如果以 Unicode 文件格式创建文件则该值为 True;如果以 ASCII 文件格式创建文件则该值为 False如果省略此部分则假定创建 ASCII 文件 在前面中我们用 ss=fs.CreateTextFile(syslog,ForWriting,false) 来在 log 文件不存在情况下创建文件并对文件进行写操作这里“ForWriting”表示写文件 和 CreateTextFile 思路方法区别 OpenTextFile 思路方法用来获得你指定文件名并打开该文件利用它所带参数我们可以对文件进行各种区别操作和 CreateTextFile 思路方法样 OpenTextFile 思路方法返回个 TextStream 对象使得你可以在文件被打开后操作该文件 OpenTextFile 思路方法语法如下 : Set objTextStream=FileObject.OpenTextFile(Filename,[Iomode],[Create],[Format]) 参数介绍说明如下 : 1、 Filename 必须变量同 CreateTextFile filename 2、 Iomode 可选常量取值为下列两个常数的 ForReading 或 ForAppending如果 mode 为 1文件以只读方式打开如果为 8则文件以追加方式打开 3、Create 可选布尔量指定如果你想打开文件不存在是做什么操作如果其值为 True当文件不存在时就自动创建个空文件如果为 False就会在文件没找到时产生个出错信息其默认值是 False建议将其设为 True以避免在打开文件时检查是否出错 4、 Format 可选值可以选择 3种 Tristate 值分别指定文件格式 -2、 -1、和 0 分别对应于系统缺省、 unicode 和 ASCII 在打开或创建了文本文件后就得到个 TextStream 对象该对象有个光标就好象是在字处理中光标样指出接下来要敲入将出现位置它同时也指出你要读取位置不能通过 CreatObject 来创建个 TextStream 对象得到 TextStream 对象唯思路方法是如前所述用 FileObject 对象打开个存在文本文件或者创建个新文件 下面列出了 TextStream 对象属性和思路方法 TextStream.AtEndOfLine 只读布尔量当光标在当前行末尾时其值为 true反的则为 false TextStream.AtEndOfStream 只读布尔量如果光标在流末尾时其值为 true否则为 false TextStream.Column 只读整数统计从行首到当前光标位置的间数 TextStream.Line 只读整数指明光标所在行在整个文件中行号 TextStream.close 关闭流以及对应文本文件 TextStream.read(Num) 指定从光标当前位置开始从文本文件中读取定数目 TextStream.readall 将整个流读入个串中 TextStream.readline 将整行读入个串中 TextStream.write(text) 将个串写入流中 TextStream.writeline 将个文本串写入流中 TextStream.skip(Num) 在流中将光标位置移动定数目串长度 TextStream.skiplines 在流中将光标移动定数目行数 TextStream.writeblank 将定数目空行写入流中 lines(num) 相信大家现在已经可以感觉到 ASP File Access 组件强大功能了其实它远不仅仅可以写些 log 文件通过它你甚至可以毫不费力远程自动更新你网站WebSite你只要把固定格式文本文件传送到远端服务器上通过 File Access 组件读取文件并自动生成全新 HTML 页面即可而不必再辛辛苦苦地个个地更新 HTML 文件如果你有兴趣你完全可以用 ASP File Access 组件写个自己全自动 HTML 生成器充分享受维护网站WebSite超前轻松感 2
相关文章读者评论发表评论 |