Hej !
Vore tacksam om någon kan hjälpa mig med följande:
Har gjort ett script (som i det närmaste liknar ett i boken
ASP-Lättpoken, skitbok med massa buggar som f-n enligt mig)
Syftet är att kunna skriva och läsa nyskapta textfiler
direkt från formulär.
Det går bra att skriva text-fil men inte läsa.
Kan inte fatta varför.
Här är förstasidan som öppnar, läser och anropar skrivsidan:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h5>Skapa och öppna fil</h5><br>
<form action="input.asp" method="POST">
Namn på filen:<br>
<input type="text" name="filnamn"><br>
Innehåll i filen:<br>
<textarea name="inhall" rows="3" cols="60">
</textarea>
<br>
<input type="submit" value="skapa fil">
</form>
<br>
<form method="POST" action=Text.asp">
<h5>Öppna fil</h5>
Filnamn:
<br>
<input type="text" name="opfil">
<input type="submit" value="Läs">
</form>
<%
Sfil=Trim(Cstr(request.form("opfil")))
if not Sfil="" then
response.write("Innehållet i filen" & Sfil & ".txt<br><br>")
Set FilStromobjekt = Server.CreateObject("Scripting.FileSystemObject")
Set Lasa=FilStromobjekt.OpenTextFile(Server.MapPath("Textfiler/" & Sfil & ".txt"))
Do While not(Lasa.AtEndofstream)
Response.write(Lasa.ReadLine &"<br>")
Loop
Set Lasa=Nothing
end if
%>
</body>
</html>
Här är andrasidan som skriver textfilen:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
sStrl=request.form("filnamn")
sInh=request.form("inhall")
if not sStrl="" then
Set FilStromobjekt=Server.CreateObject("Scripting.FilesystemObject")
Set Skrivtillfil=FilStromobjekt.CreateTextFile(Server.MapPath("Textfiler/" & sStrl & ".txt"),True)
Skrivtillfil.writeLine(sInh)
Skrivtillfil.Close
end if
response.redirect("Text.asp")
%
Fungerar det när du från första filen, formuläret tar dig till text.asp?
Att det inte fungerar direkt efter att du skrivit till textfilen är ju därför då har du inget värde i request.form("opfil").
Fast det kanske inte är där det strular?
Textfilen skapas(fungerar) och efter "response.Redirect " tillbaks till "Text.asp" skriver jag in filnamnet i "opfil" där efter kommer felmeddelandet att "filen kan ej hittas på servern" när jag klickar på "submit".
Här även provat att öpna en färdig textfil direkt genom att skriva in det filnamnet, vilket också borde fungera. Funkar inte.
Samma felmeddelande.
Testa med att köra med den här koden istället. :) (Har gjort din kod lite lättläsligare också, hoppas det går bra.)
Text.asp:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h5>Skapa och öppna fil</h5><br>
<form action="input.asp" method="POST">
Namn på filen:<br>
<input type="text" name="filnamn"><br>
Innehåll i filen:<br>
<textarea name="inhall" rows="3" cols="60">
</textarea>
<br>
<input type="submit" value="skapa fil">
</form>
<br>
<form method="POST" action=Text.asp">
<h5>Öppna fil</h5>
Filnamn:
<br>
<input type="text" name="opfil">
<input type="submit" value="Läs">
</form>
<%
strFilnamn = Session("filnamn")
If Len(strFilnamn) = 0 Then
strFilnamn = Trim(Request.Form("opfil"))
End If
If NOT Len(strFilnamn) = 0 Then
Response.Write("Innehållet i filen" & strFilnamn & ".txt<br><br>")
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(Server.MapPath("Textfiler/" & strFilnamn & ".txt"), 1)
Do Until objTS.AtEndOfStream
Response.Write(objTS.ReadLine & "<br>")
Loop
objTS.Close : Set objTS = Nothing
Set objFSO = Nothing
End If
Session.Abandon
%>
</body>
</html>
input.asp:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
strFilnamn = Trim(Request.Form("filnamn"))
strInnehall = Trim(Request.Form("inhall"))
If NOT Len(strFilnamn) = 0 Then
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If NOT objFSO.FileExists(Server.MapPath("Textfiler/" & strFilnamn & ".txt") Then
Set objTS = objFSO.CreateTextFile(Server.MapPath("Textfiler/" & strFilnamn & ".txt"), True)
Else
Set objTS = objFSO.OpenTextFile(Server.MapPath("Textfile/" & strFilnamn & ".txt"), 8)
End If
objTS.WriteLine(strInnehall)
objTS.Close : Set objTS = Nothing
End If
Set objFSO = Nothing
Session("filnamn") = strFilnamn
Response.Redirect("Text.asp")
%>