男人吃奶摸下挵进去好爽,日日躁夜夜躁狠狠躁,freesexvide0s性欧美高清,高清freexxxx性国产,无码人妻一区二区三区一,乱人伦中文字幕成人网站在线,亚洲欧美综合一区二区三区 ,神马影院在线视频观看
知識學堂
  • ·聯系電話:+86.023-75585550
  • ·聯系傳真:+86.023-75585550
  • ·24小時手機:13896886023
  • ·QQ 咨 詢:361652718 513960520
當前位置 > 首頁 > 知識學堂 > 網站建設知識
ASP網站程序自動升級實現的方法
更新時間:2011-12-15 | 發布人:本站 | 點擊率:666

現在流行虛擬主機建站,我也有個網站,也算是個站長咯。當了近一年的站長,感到網站程序每次升級的時候頗為麻煩:先去官方看公告,然后下載升級包到本地,解壓,FTP上傳到虛擬主機。這些都是累人的體力活,加之本人又懶得很,所以異想天開的覺得要是程序能夠自動升級就好了。所以就想了想,寫了本文,希望對WEB程序開發者有幫助。這里只針對ASP,因為我只會ASP :-(

先看看傳統的win32程序的升級過程(比如殺毒軟件),它是依靠軟件的升級程序通過網絡連接到服務器分析并下載升級文件到本地。

WEB程序有點不一樣,因為它是運行于WEB服務器。它最終是要把升級服務器上的文件覆蓋到WEB服務器,站長的電腦只是中轉。如果直接把升級服務器上的文件Copy到WEB服務器(而不通過站長中轉)那就實現了自動升級。

好在系統自帶了一個 Microsoft.XMLHTTP 組件用于訪問WEB,在ASP中可以調用它來實現連接升級服務器下載升級文件。

以下代碼是利用 Microsoft.XMLHTTP下載文件的例子:

<%
Set xPost = CreateObject("Microsoft.XMLHTTP")
         xPost.Open "GET","http://www.xxx.com/test.exe",False
         xPost.Send()
         Set sGet = CreateObject("ADODB.Stream")
         sGet.Mode = 3
         sGet.Type = 1
         sGet.Open()
         sGet.Write(xPost.responseBody)
         sGet.SaveToFile Server.MapPath("update.exe"),2
         set sGet = nothing
         set sPOST = nothing
         response.Write("下載文件成功!<br>")
%>

上面代碼就是把 http://www.xxx.org/test.exe保存到WEB服務器當前目錄,至于Microsoft.XMLHTTP 的更多用法還是看看MSDN吧。

如果文件比較多,就會多次調用Microsoft.XMLHTTP連接網絡,就可能出現某次連接失敗部分文件未能更新的情況,為了避免這種情況,最好是把所有文件打包為一個文件一次下載到WEB后再解包。
呵呵,這里說的打包可不是RAR或者ZIP包,而是我們自己定義。比如把所有文件拼接為一個,然后再根據特殊的記號分開。現在沒這么麻煩咯,因為有個現成的辦法,我們使用拿來主義就是:把所有文件(二進制形式)及其路徑信息放入Access數據庫。

下面這個vbs文件(來自海洋頂端2006Plus)就是打包當前目錄的所有文件的:

       Dim n, ws, fsoX, thePath
         Set ws = CreateObject("WScript.Shell")
         Set fsoX = CreateObject("Scripting.FileSystemObject")
         thePath = ws.Exec("cmd /c cd").StdOut.ReadAll() & "\"
         i = InStr(thePath, Chr(13))
         thePath = Left(thePath, i - 1)
         n = len(thePath)
On Error Resume Next
         addToMdb(thePath)
         Wscript.Echo "當前目錄已經打包完畢,根目錄為當前目錄"
         Sub addToMdb(thePath)
                   Dim rs, conn, stream, connStr
                   Set rs = CreateObject("ADODB.RecordSet")
                   Set stream = CreateObject("ADODB.Stream")
                   Set conn = CreateObject("ADODB.Connection")
                   Set adoCatalog = CreateObject("ADOX.Catalog")
                   connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Packet.mdb"
                   adoCatalog.Create connStr
                   conn.Open connStr
                   conn.Execute("Create Table FileData(Id int IDENTITY(0,1) PRIMARY KEY CLUSTERED, P Text, fileContent Image)")
                   stream.Open
                   stream.Type = 1
                  rs.Open "FileData", conn, 3, 3
                   fsoTreeForMdb thePath, rs, stream
                   rs.Close
                   Conn.Close
                   stream.Close
                   Set rs = Nothing
                   Set conn = Nothing
                   Set stream = Nothing
                   Set adoCatalog = Nothing
         End Sub
         Function fsoTreeForMdb(thePath, rs, stream)
                   Dim i, item, theFolder, folders, files
                   sysFileList = "$" & WScript.ScriptName & "$Packet.mdb$Packet.ldb$"
                   Set theFolder = fsoX.GetFolder(thePath)
                   Set files = theFolder.Files
                   Set folders = theFolder.SubFolders
                   For Each item In folders
                            fsoTreeForMdb item.Path, rs, stream
                   Next
                   For Each item In files
                            If InStr(LCase(sysFileList), "$" & LCase(item.Name) & "$") <= 0 Then
                                     rs.AddNew
                                     rs("P") = Mid(item.Path, n + 2)
                                     stream.LoadFromFile(item.Path)
                                     rs("fileContent") = stream.Read()
                                     rs.Update
                            End If
                   Next
                   Set files = Nothing
                   Set folders = Nothing
                   Set theFolder = Nothing
         End Function

以下是解包的ASP文件:

<%
         Sub UnPack()
                   str = Server.MapPath(".") & "\"
                   Set rs = CreateObject("ADODB.RecordSet")
                   Set stream = CreateObject("ADODB.Stream")
                   Set conn = CreateObject("ADODB.Connection")
                   Set oFso = CreateObject("Scripting.FileSystemObject")
                   connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("update.mdb")
                   conn.Open connStr
                   rs.Open "FileData", conn, 1, 1
                   stream.Open
                   stream.Type = 1
                   Do Until rs.Eof
                            theFolder = Left(rs("P"), InStrRev(rs("P"), "\"))
                            If oFso.FolderExists(str & theFolder) = False Then
                                     oFso.CreateFolder(str & theFolder)
                            End If
                            stream.SetEOS()
                            If IsNull(rs("fileContent")) = False Then stream.Write rs("fileContent")
                            stream.SaveToFile str & rs("P"), 2
                            rs.MoveNext
                   Loop
                   rs.Close
                   conn.Close
                   stream.Close
                   Set ws = Nothing
                   Set rs = Nothing
                   Set stream = Nothing
                   Set conn = Nothing
                   Set oFso = Nothing
         End Sub
%>

嗯,有了以上代碼就不難開發出自己的ASP升級程序了,流程無外乎這樣:判斷是否需要升級(Y) -> 下載升級包 -> 解開升級包覆蓋舊文件 -> 刪除升級包 -> 更新版本信息 -> OK

寫到這里差不多該結束了,還有些諸如版本判斷之類的細節就略過略過咯。

希望早日用到自動升級的各類WEB程序,也好讓我等懶人樂得悠閑,哈哈。

分享到: QQ空間 新浪微博 開心網 人人網
主站蜘蛛池模板: 丰满熟女人妻大乳| 实拍女处破www免费看| 色翁荡息又大又硬又粗又视频图片| 久久人妻无码一区二区三区av| 日韩精品无码一本二本三本色| 护士人妻hd中文字幕| 国产在线视频福利资源站| 日欧137片内射在线视频播放| 好大好深好猛好爽视频免费| 精品国产乱码久久久人妻| 中国老头和老妇tube| 我的乳在厨房被揉搓| 不卡无码人妻一区二区三区| 护士人妻hd中文字幕| 无码熟妇人妻av在线网站| 97人人模人人爽人人少妇| 人妻av综合天堂一区| 成人性生交大片免费看r男欢女爱 《漂亮的女邻居》三级 | 美女黄网站视频免费视频| 丁香花在线| 国产精品免费久久久久影院仙踪林 | 亚洲av无码乱码国产麻豆穿越| 美女黄频视频大全免费的国内| 99精品国产一区二区三区| 人妻丰满熟妇av无码区免| 大地资源网在线观看免费动漫| 99精产国品一二三产区| 人妻在卧室被老板疯狂进入| 两个人的视频全免费观看在线| 一本大道av伊人久久综合| 无码人妻一区二区三区免费| 姑娘故事高清在线观看免费| 忘忧草www日本韩国| 挺进朋友人妻雪白的身体韩国电影 | 18+内射| 高清windows免费版| 日本一卡2卡3卡4卡无卡免费| 亚洲av综合永久无码精品天堂| 大地资源免费视频观看| 亚洲丶国产丶欧美一区二区三区| 久久久精品人妻无码专区不卡|