幾個經典的ASP應用

來源:互聯網
上載者:User

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)載入完後,另一個架構頁面才會顯示。

如果你使用代理訪問, 預設情況下,許多Proxy 伺服器不會動態緩衝ASP頁面內容,加入下面的代碼:

<%
Response.CacheControl = "Public"
%>

這行代碼會將ASP頁面緩衝在Proxy 伺服器上,從而加快用戶端請求動態網頁面的響應速率,一些不經常變化的ASP頁面將直接從Proxy 伺服器上取得。

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.