[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>