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
' 需要在你的服務器上安裝 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