Seite 1 von 1

Dateigröße auslesen

Verfasst: Freitag 8. Juli 2005, 07:27
von Pit
Hallo,

ich möchte vor dem Übertragen einer Datei deren Größe ermitteln und dann, wenn die Größe überschritten ist, die Übertragung nicht zulassen. Ich habe schon folgende Code eingefügt:

Code: Alles auswählen

if os.path.getsize(tempdir + up_file)>10485760L:
	response.write("Die Datei ist groeßer als 10 MB.")
raise spyceDone
Unter Windows 2000 funktioniert das einwandfrei, jedoch unter Windows 2003 Server erhalte ich eine Fehlermeldung:

Code: Alles auswählen

Spyce exception 
File: c:\\Programme\\ServPDF\\htdocs\\serverapp.spy 
Message: OSError: [Errno 2] No such file or directory: \'c:\\\\Programme\\\\ServPDF\\\\spyce\\\\temp\\\\Exchange_Server_2003.doc\'


Stack: serverapp.spy:66, in (main):
if os.path.getsize(tempdir + up_file)>10485760L:

c:\\Programme\\ServPDF\\python24\\lib\\ntpath.py:229, in getsize:
return os.stat(filename).st_size
Wo kann der Fehler liegen bzw. gibt es Code-Alternativen?

Schönes Wochenende

Pit

Verfasst: Freitag 8. Juli 2005, 07:39
von jens
Das sieht aber so aus, das es kein Fehler mit der Größenbestimmung an sich gibt, sondern das der Pfad "tempdir + up_file" einfach nicht existiert!
Benutz doch besser os.path.join( tempdir, up_file )
Lass dir den Pfad doch mal richtig ausgeben und schau nach ob er stimmt.

Verfasst: Freitag 8. Juli 2005, 07:59
von Pit
Hallo Jens,

vielen Dank für deine Hilfe! Der Pfad existiert, es ist auch alles identisch mit der Windows 2000 installation.

Ich habe den Code jetzt folgendermassen angepasst:

if os.path.join( tempdir, up_file )>10485760L:
response.write("Die Datei ist groeßer als 10 MB.")
raise spyceDone


Unter Win 2000 funktioniert das alles wieder perfekt. Unter Win 2003 kommt
jetzt seltsamerweise bei jeder Datei die Meldung "Die Datei ist größer als 10 MB", auch wenn die Datei nur 5 Kilobyte hat.

Weisst du eine Lösung?

Grüße

Pit

Verfasst: Freitag 8. Juli 2005, 08:01
von jens
:lol:

Du vergleichst ja nicht mehr die größe :D

So sollte es gehn:

Code: Alles auswählen

if os.path.getsize( os.path.join( tempdir, up_file ) )>10485760L:

Verfasst: Freitag 8. Juli 2005, 08:18
von Pit
Achso :oops:

Aber jetzt :shock: macht der garnix mehr. Selbst unter Win2000 wird nur noch ne leere Seite angezeigt, egal wie groß die Datei ist.

Verfasst: Freitag 8. Juli 2005, 08:22
von jens
Also da stimmt doch was nicht. Da muß man wohl ein bischen genauer gucken:

Code: Alles auswählen

file_name = os.path.join( tempdir, up_file )
print "Filename:", file_name

print "isfile:", os.path.isfile( file_name )

file_size = os.path.getsize( file_name )
print "Filesize:", file_size

if file_size>10485760L:
    response.write("Die Datei ist groeßer als 10 MB.")
raise spyceDone 
vielleicht auch statt print response.write() nehmen?!?

Verfasst: Freitag 8. Juli 2005, 08:40
von Pit
Ähhh...jetzt mault er in Zeile 75:

Invalid Syntax

try:

Vorher hat er bei der Zeile nie gemeckert. Könnte ich dir die Datei mal mailen?

Verfasst: Freitag 8. Juli 2005, 09:18
von jens
Wenn sie nicht all zu lang ist, dann poste sie ins Forum, ansonsten schick mit eine PM

Verfasst: Freitag 8. Juli 2005, 12:29
von Leonidas
Ich tippe auf einen Einrückungsfehler.