您要打印的文件是:温故知新:几个经典的ASP应用

温故知新:几个经典的ASP应用

作者:yjgx007    转贴自:csdn    点击数:2343


1. 下面的代码演示了如何在服务端获取来自客户端浏览器中某一个图片的x,y坐标,注意input控件的类型是image类型。



<form>
<Input Name=ImageMap Type=Image Src=ImageMap.jpg Alt=Click Anywhere>
</form>

<%ImageMap.x = <%=Request(ImageMap.x)
ImageMap.y = <%=Request(ImageMap.y)%>

 

  2. 利用ADODB.Stream对象,在IE浏览器中下载服务端上的各类文件。

  即直接提示用户下载而不是由浏览器打开某些文件。注意,下面的代码拷贝到ASP文件中后,不要再添加一些非ASP代码在页面中:如HTML和javascript客户端的代码。


<%
'--------------------------------------------
Response.Buffer = True
Dim strFilePath, strFileSize, strFileName

Const adTypeBinary = 1

strFilePath = 文件路径
strFileSize = ... 文件大小,可选
strFileName = 文件名

Response.Clear

'8*******************************************8
' 需要在你的服务器上安装 MDAC 2.6 或MDAC2.7
'8*******************************************8
Set objStream = Server.CreateObject(ADODB.Stream)
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath

strFileType = lcase(Right(strFileName, 4)) '文件扩展名

' 通过文件扩展名判断 Content-Types
Select Case strFileType
Case .asf
ContentType = video/x-ms-asf
Case .avi
ContentType = video/avi
Case .doc
ContentType = application/msword
Case .zip
ContentType = application/zip
Case .xls
ContentType = application/vnd.ms-excel
Case .gif
ContentType = image/gif




Case .jpg, jpeg
ContentType = image/jpeg
Case .wav
ContentType = audio/wav
Case .mp3
ContentType = audio/mpeg3
Case .mpg, mpeg
ContentType = video/mpeg
Case .rtf
ContentType = application/rtf
Case .htm, html
ContentType = text/html
Case .asp
ContentType = text/asp
Case Else
'Handle All Other Files
ContentType = application/octet-stream
End Select

Response.AddHeader Content-Disposition, attachment; filename= strFileName
Response.AddHeader Content-Length, strFileSize
Response.Charset = UTF-8 ' 客户端浏览器的字符集UTF-8
Response.ContentType = ContentType

Response.BinaryWrite objStream.Read
Response.Flush

objStream.Close
Set objStream = Nothing

%>

 

  3.提升ASP页面的响应速率 

  在你的ASP页面的第一行加入:


<% ENABLESESSIONSTATE = False %>



  这会关闭session对象,提升你的服务器响应速率,比较常见的问题是一个html页面包含了两个框架
页面(至少有一个是ASP页面,并使用了session),这将使得必须等待某一个框架页(当然这个框
架页中使用了session)加载完后,另一个框架页面才会显示。

  如果你使用代理访问, 默认情况下,许多代理服务器不会动态缓存ASP页面内容,加入下面的代码:




<%
Response.CacheControl = Public
%>


  这行代码会将ASP页面缓存在代理服务器上,从而加快客户端请求动态页面的响应速率,一些不经常变化的ASP页面将直接从代理服务器上取得。

  4. 要知道浏览器(IE为例)不会解析回车和换行字符,如果你用Response.write方法写一行包含了回车和换行字符的字符串到动态页面中,其结果可想而知,你需要做的是:


<%
Response.Write(Replace(body, vbCrLf,<br>))
%>


  用<br>来代替回车和换行。注意:如果回车和换行字符出现在form中的input/textarea等控件中,可以不必这么做。

  5. 用ASP代码写IIS日志


<%
     Response.AppendToLog 数据库正在被访问
%>


  执行这段代码后,在你的IIS日志中可能会出现下面的字符串:
127.0.0.1, -, 01/01/00, 12:00:34, W3SVC1,WEBSERVER,
127.0.0.1, 161342, 485, 228, 200, 0, get, /somefile.asp, 数据库正在被访问

  注意:由于日志文件中的内容是按逗号分隔,所以写入的日志内容应避免使用逗号。

  6. 如何访问远程计算机上MDB数据库文件

  如果你用ODBC连接(DSN方式或其它方式)到远程计算机的MDB文件,这将产生一个错误:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
大致意思是该文件可能被其他用户访问或无足够的权限访问。

  下面有两种方式,避免这个错误:

    方式a. 使用DAO引擎访问


  Dim File, Conn, RS
  Const ReadOnly = False


 


 File = \\server\share\file.mdb
  Set Conn = CreateObject(DAO.DBEngine.35).Workspaces(0).OpenDatabase(File,,ReadOnly)
  Set RS = Conn.OpenRecordset(SQL)


  方式b. ADO + Jet OLE DB provider方式


  Dim Conn, RS
  Set Conn = CreateObject(ADODB.Connection)
  Conn.Provider = Microsoft.Jet.OLEDB.4.0
  Conn.Open \\server\share\file.mdb
  Set RS = Conn.Execute(SQL)

    确定在运行ASP页面时有足够的访问权限以访问远程计算机上的MDB文件,在访问MDB文件前需要先

  登录到远程计算机,添加下面的代码


    Set UM = CreateObject(UserManager.Server)
    UM.LogonUser 帐号, 口令, 域
...
open database
...
    UM.RevertToSelf