Men om min Internet provider inte har ASP, då kan jag inte använda
ovanstående metoder, eller?
FEL !
Man kan använda Content Linking och include även om man inte kan sätta ut
asp koden på nätet. Bara man själv har tillgång till ASP på egen dator.
Detta görs genom att skapa en ASP site enligt ovanstående ideér och sedan
konvertera resultatet till HTML
Detta kan göras programmatiskt!
Prova följande
- Starta Visual Basic
(Instruktionerna är för version 5. Borde gå att tillämpa även i version 6,
men jag har inte tillgång till denna version)
- Skapa ett Standard EXE projekt
- Välj menyn Project, Components och se till att
Microsoft Internet Transfer Control ... är valt.
(Slutet på texten kan variera beroende på servicepacks och VB version)
- Sätt in följande på formen
- Tre enradiga TextBoxar med namnen Text1, Text2 och Text3
- En ListBox med namnet List1
- En Inetkontroll med namnet Inet1
(syns som en dator med jordglob bakom sig i Toolboxen, och kom dit när vi valde Components ovan)
- En CommandButton med namnet Command1
- Några Labels för förklaringstext
- Kopiera in följande kod till formen
Option Explicit
Dim fileContents As String
Private Sub Command1_Click()
' Lite Quick And Dirty men fungerar!
' (c) aen 1999
Dim baseURL As String
Dim listFile As String
Dim outDirectory As String
Dim fileName As String
Dim strTemp As String
Dim indTemp As Integer
Dim indTab As Integer
Dim indASP As Long
Dim strHTML As String
Dim fileNameHTML As String
baseURL = Text1.Text
listFile = Text2.Text
outDirectory = Text3.Text
Inet1.URL = baseURL & "/" & listFile
Inet1.Execute , "GET"
' Det står fel i VB:s hjälp. Jämför inte StillExecuting med True
Do While Inet1.StillExecuting
DoEvents
Loop
strTemp = fileContents
indTab = InStr(strTemp, Chr(9))
Do While indTab > 0
fileName = Left(strTemp, indTab - 1)
Inet1.URL = baseURL & "/" & fileName
Inet1.Execute , "GET"
Do While Inet1.StillExecuting
DoEvents
Loop
If InStr(fileName, ".asp") > 0 Then
strHTML = fileContents
fileNameHTML = outDirectory & "\" & _
Left(fileName, InStr(fileName, ".asp") - 1) & ".htm"
indASP = InStr(LCase(strHTML), ".asp")
Do While indASP > 0
strHTML = Left(strHTML, indASP - 1) & _
".htm" & Mid(strHTML, indASP + 4)
indASP = InStr(LCase(strHTML), ".asp")
Loop
Open fileNameHTML For Output As #1
Print #1, strHTML
Close #1
End If
strTemp = Mid(strTemp, indTab + 1)
indTemp = InStr(strTemp, Chr(10))
If indTemp > 0 Then
strTemp = Mid(strTemp, indTemp + 1)
End If
indTab = InStr(strTemp, Chr(9))
List1.AddItem "Konverterat:" & Chr(9) & fileName
Loop
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
Select Case State
Case icResponseCompleted
Dim vtData As Variant
Dim strData As String: strData = ""
Dim bDone As Boolean: bDone = False
vtData = Inet1.GetChunk(1024, icString)
Do While Not bDone
strData = strData & vtData
vtData = Inet1.GetChunk(1024, icString)
If Len(vtData) = 0 Then
bDone = True
End If
Loop
fileContents = strData
End Select
End Sub
- Prova detta program genom att:
- Skriv in webadressen till din katalog som innehåller ASP koden i Text1
Om datorn heter pentti och det finns en virtuell katalog med namet aspsidor så skriver du pentti/aspsidor
- Skriv in namnet på en listfil i Text2. T.ex. links.txt
- Skriv in katalognamet dit du vill att de konverterade HTML sidorn skall komma i Text3. T.ex. c:\htmsidor
OBS! Katalogen måste finnas, programmet skapar den inte
- Clicka på Command1 knappen
- Kontrollera vad som finns i c:\htmsidor katalogen. Om links.txt
innehöll hänvisningar till sid1.asp, sid2.asp o.s.v så bode du nu ha fått sid1.htm, sid2.htm o.s.v
- Tag in en av dessa sidor i din browser och prova länkarna
Programmet byter ut ALLA href="enfil.asp" till href="enfil.htm".
Även externa hänvisningar. Om detta stör dina länkar så går det nog att modifiera
programmet så att det beaktar skillnaden mellan externa och interna länkar...
I praktiken byter den ut ALLA .asp till .htm, även fast det inte var en länk.
Kanske man inte brukar skriva .asp så ofta i vanliga sidor
För enkelhetens skull får det duga, modifiera gärna vidare om du kan/orkar/ids
Programmet kopierar inte bilder till resultatkatalogen utan dessa måste
kopieras separat.
Denna metod fungerar ju inte så bra med riktigt dynamiska sidor med databaser,
counters med mera, men kan ändå vara bra att känna till
Men det som är kul med denna metod är att man kan använda include och
dynamiska länkar för att "prototypa" sidorna. Man man är nöjd så kör
man dem genom detta program och kan sedan sätta upp dem på vilken server
som helts. Till och med en Linux burk utan ASP
Pretty Cool! Detta är dock min personliga åsikt och vem har väl någonsin brytt sig i den?