Dateigröße auslesen

Code-Stücke können hier veröffentlicht werden.
Antworten
Pit

Freitag 8. Juli 2005, 07:27

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
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 8. Juli 2005, 07:39

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.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Pit

Freitag 8. Juli 2005, 07:59

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
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 8. Juli 2005, 08:01

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Pit

Freitag 8. Juli 2005, 08:18

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.
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 8. Juli 2005, 08:22

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?!?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Pit

Freitag 8. Juli 2005, 08:40

Ä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?
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 8. Juli 2005, 09:18

Wenn sie nicht all zu lang ist, dann poste sie ins Forum, ansonsten schick mit eine PM

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 8. Juli 2005, 12:29

Ich tippe auf einen Einrückungsfehler.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten