webForumDet fria alternativet

Skriva och läsa till nyskapad textfil problem

ASP

4 svar · 260 visningar · startad av Klasw

Medlem sedan maj 20033 inlägg
Frågan#1

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")
%
Medlem sedan mars 20015 287 inlägg
#2

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?

Annars, felmess? Vad händer/händer inte?

Slutligen: Välkommen till wF!

Ps. Använd [Kod]-taggar.

Medlem sedan maj 20033 inlägg
#3

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.

Medlem sedan jan. 20032 285 inlägg
#4

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") 
%>
Medlem sedan maj 20033 inlägg
#5

Skall testa och försöka förstå.

Tack för ditt inlägg.
Skall testa, läsa på och försöka förstå.

(Skillnaden är bara en sak, jag kanske vill kunna skriva över textfilen ?)

Återkommer.

Kommentera gärna vilket det avgörande felet är, som jag har gjort ?!

Tack för hjälpen så länge.

255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
115 ms — ändringar (db)