[ASP] PC streikt bei Uploadscript
Georg Dreier
activeserverpages at glengamoi.com
Wed, 1 Dec 2004 15:28:24 +0100
Hey Leute!
Habe auf meinem IIS folgendes Upload Script, dass bei allen PC's auf =
denen
ichs ausprobiert habe funktioniert hat.
Doch bei meinem lädt er die Datei nicht hoch, sondern bleibt stecken. =
Danach
funktioniert der IIS bis zum neustart nicht mehr.
Wisst ihr woran das liegen könnte?
Hier der CODE
-------------------------------------------------------------------------=
---
--------------
<%
Response.Expires=0
Response.Buffer=true
laenge = Request.TotalBytes
%>
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; =
charset=windows-1252">
<title>Neue Seite 1</title>
</head>
<body>
<%
' Maximale akzeptable Dateigrösse
maxsize = 70000
' Ordner auf dem Webserver, in dem hochgeladene Dateien gespeichert =
werden:
uploadfolder = "C:\Inetpub\wwwroot\maturaprojekt\images_news\"
if laenge>0 then
' Keine Daten übertragen, also Formular anzeigen:
ProcessUpload
else
' Datei wird übertragen, also annehmen und speichern:
AskFile
end if
sub AskFile
%>
<form method="POST" enctype="multipart/form-data">
<p><input type="file" name="T1" size="20"></p>
<p><input type="submit" value="Datei hochladen"></p>
</form>
<%
end sub
sub ProcessUpload
if laenge>maxsize then
%><p><i>Die Datei ist mit <%=laenge%> Bytes viel zu groß.
Ich akzeptiere nur Dateien bis maximal <%=maxsize%> Bytes!</i></p><%
' Daten trozdem abnehmen und verwerfen:
muell = Request.BinaryRead(laenge)
else
%>
<p> Ergebnis des Uploads:</p>
<p> Die Länge des POST-Datenblocks betragt <i><%=laenge%></i>
Bytes.<hr><%
'Utility-Objekt einbinden, das die Binärdaten umwandelt:
set util = Server.CreateObject("ixsso.Util")
=09
' Rohdaten einlesen:
rawpost = ""
for x=1 to laenge
bytedata = (util.GetArrayElement(Request.BinaryRead(1),0))
rawpost = rawpost + chr(bytedata)
next
set util = Nothing
=09
=09
' Startpunkt der Datei-Daten finden:
findstart = InStr(rawpost, vbCrLf & vbCrLf)
if findstart>0 then
' Startpunkt gefunden
' Dateiinhalt:
rawfiledata = mid(rawpost, findstart+4)
' Headerinformationen:
headerdata = left(rawpost, findstart)=09
' Begrenzungszeichen ermitteln:
delimiter = left(headerdata, 40)
=09
' Dateinamen finden:
startpos = InstrRev(headerdata, "filename=")
startpos = Instr(startpos, headerdata, """")
endpos = Instr(startpos+1, headerdata, """")
filename = mid(headerdata, startpos+1, endpos-startpos-1)
if filename = "" then
%><p><i>Es wurde kein Dateiname angegeben!</i></p><%
Response.End
end if
=09
' Dateiinhalt finden:
startpos = Instr(rawfiledata, delimiter)
rawfiledata = left(rawfiledata, startpos-3)
=09
' Status ausgeben
%><p>Gesendet wurde die Datei <i><%=filename%></i></p>
<p>Inhalt der Datei:<br><i><%=Replace(rawfiledata, vbCr,
"<BR>")%></i></p><%
=09
' Gesendete Datei speichern
set fs = Server.CreateObject("Scripting.FileSystemObject")
=09
' Fehlenden Begrenzer anfügen, falls erforderlich:
if not right(uploadfolder,1)="\" then
uploadfolder = uploadfolder + "\"
end if
=09
fileownname = fs.GetFileName(filename)
if not fs.FolderExists(uploadfolder) then
%>
<p><i>Der Zielordner <%=uploadfolder%> existiert
nicht!</i></p><%
Response.End
end if
set fh = fs.CreateTextFile(uploadfolder & fileownname, vbTrue)
fh.Write rawfiledata
fh.close
=09
'Objekte wieder freigeben:
set fh = Nothing
set fs = Nothing
%>
<p> Datei wurde auf dem Webserver als <i><%=uploadfolder &
fileownname%></i>
gespeichert!</p><%
end if
end if
%><a href="5-6.asp"> <p> Noch eine Datei hochladen</p></a> <%
end sub
%>
</body>
</html>