Hi,
wie kann ich nach einem Fileupload die Dateigröße prüfen? Ich möchte z.B. nur Dateigrößen von 100kb zulassen.. Muss ich das File erst auf der HD zwischenspeichern, um die Größe abzuprüfen oder geht das auch in der ZODB direkt?
Gruß, Dussel
File-Upload Dateigröße prüfen
- dusselmann
- User
- Beiträge: 70
- Registriert: Donnerstag 28. Juli 2005, 12:47
- Kontaktdaten:
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Dussel!dusselmann hat geschrieben: wie kann ich nach einem Fileupload die Dateigröße prüfen?
Du nimmst vor dem Speichern des "file"-Objektes dieses "file"-Objekt irgendwie entgegen. Bevor du es speicherst, könntest du mit len() die Größe des "file"-Objektes abfragen.
Nachdem das Objekt gespeichert wurde kommst du meistens mit "getSize()" an die Größe ran.
lg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- dusselmann
- User
- Beiträge: 70
- Registriert: Donnerstag 28. Juli 2005, 12:47
- Kontaktdaten:
Danke dir! 

- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Jens!jens hat geschrieben:Kann man nicht direkt an den os.environ["CONTENT_LENGTH"] gehen???
Kann sein, glaube ich aber nicht, da das eher zu CGI passt.
lg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Jens!jens hat geschrieben:Hm! Willst du damit sagen, das man in Zope nicht an die vom Browser geschickten Header ran kommt?
Nein, so meinte ich das natürlich nicht.

Hier ein Beispiel, eines Aufrufes, des bearbeitenden Skriptes und des Ergebnisses:
Aufrufende Seite:
Code: Alles auswählen
<html>
<body>
<form enctype="multipart/form-data"
method="post"
action="empfangendes_skript"
name="frm_main"
>
<p>
Vorname: <input name="vorname"><br />
Nachname: <input name="nachname"><br />
Bild: <input name="picture" type="file">
</p>
<p>
<button type="submit" name="ok">OK</button>
</p>
</form>
</body>
</html>
Code: Alles auswählen
request = context.REQUEST
return request
Code: Alles auswählen
<h3>form</h3>
<table>
<tr valign="top" align="left">
<th>nachname</th>
<td>'asf'</td>
</tr>
<tr valign="top" align="left">
<th>picture</th>
<td><ZPublisher.HTTPRequest.FileUpload instance at
0x4368366c></td>
</tr>
<tr valign="top" align="left">
<th>vorname</th>
<td>'asdf'</td>
</tr>
<tr valign="top" align="left">
<th>ok</th>
<td>''</td>
</tr>
</table>
<h3>cookies</h3>
<table>
<tr valign="top" align="left">
<th>AnonymousVoted26c5ac8ab38a349005e26ed0e33aa21a</th>
<td>'6'</td>
</tr>
<tr valign="top" align="left">
<th>tutorialExamplesURL</th>
<td>'http://gps.gp:8380/TESTORDNER/myTutorial/examples'</td>
</tr>
<tr valign="top" align="left">
<th>tree-s</th>
<td>'eJzTyCkw5NLIKTDiClZ3hANXW3WuAmOuxEQ9AIOOB9Q'</td>
</tr>
<tr valign="top" align="left">
<th>dtpref_cols</th>
<td>'90%'</td>
</tr>
<tr valign="top" align="left">
<th>__ac_name</th>
<td>'gerold'</td>
</tr>
<tr valign="top" align="left">
<th>dtpref_rows</th>
<td>'15'</td>
</tr>
</table>
<h3>lazy items</h3>
<table>
<tr valign="top" align="left">
<th>SESSION</th>
<td><bound method SessionDataManager.getSessionData of
<SessionDataManager at /session_data_manager>></td>
</tr>
</table>
<h3>other</h3>
<table>
<tr valign="top" align="left">
<th>TraversalRequestNameStack</th>
<td>[]</td>
</tr>
<tr valign="top" align="left">
<th>AUTHENTICATED_USER</th>
<td>gerold</td>
</tr>
<tr valign="top" align="left">
<th>URL</th>
<td>'http://gps.gp:8380/TESTORDNER/empfangendes_skript'</td>
</tr>
<tr valign="top" align="left">
<th>SERVER_URL</th>
<td>'http://gps.gp:8380'</td>
</tr>
<tr valign="top" align="left">
<th>AUTHENTICATION_PATH</th>
<td>''</td>
</tr>
<tr valign="top" align="left">
<th>traverse_subpath</th>
<td>[]</td>
</tr>
<tr valign="top" align="left">
<th>PUBLISHED</th>
<td><PythonScript at /TESTORDNER/empfangendes_skript></td>
</tr>
<tr valign="top" align="left">
<th>ACTUAL_URL</th>
<td>'http://gps.gp:8380/TESTORDNER/empfangendes_skript'</td>
</tr>
<tr valign="top" align="left">
<th>URL0</th>
<td>http://gps.gp:8380/TESTORDNER/empfangendes_skript</td>
</tr>
<tr valign="top" align="left">
<th>URL1</th>
<td>http://gps.gp:8380/TESTORDNER</td>
</tr>
<tr valign="top" align="left">
<th>URL2</th>
<td>http://gps.gp:8380</td>
</tr>
<tr valign="top" align="left">
<th>BASE0</th>
<td>http://gps.gp:8380</td>
</tr>
<tr valign="top" align="left">
<th>BASE1</th>
<td>http://gps.gp:8380</td>
</tr>
<tr valign="top" align="left">
<th>BASE2</th>
<td>http://gps.gp:8380/TESTORDNER</td>
</tr>
<tr valign="top" align="left">
<th>BASE3</th>
<td>http://gps.gp:8380/TESTORDNER/empfangendes_skript</td>
</tr>
</table>
<h3>environ</h3>
<table>
<tr valign="top" align="left">
<th>HTTP_COOKIE</th>
<td>'__ac_name="gerold";
AnonymousVoted26c5ac8ab38a349005e26ed0e33aa21a="6";
dtpref_cols="90%"; dtpref_rows="15";
tutorialExamplesURL="http://gps.gp:8380/TESTORDNER/myTutorial/examples";
tree-s="eJzTyCkw5NLIKTDiClZ3hANXW3WuAmOuxEQ9AIOOB9Q"'</td>
</tr>
<tr valign="top" align="left">
<th>SERVER_SOFTWARE</th>
<td>'Zope/(Zope 2.8.3-final, python 2.3.5, linux2) ZServer/1.1
Plone/Unknown'</td>
</tr>
<tr valign="top" align="left">
<th>SCRIPT_NAME</th>
<td>''</td>
</tr>
<tr valign="top" align="left">
<th>REQUEST_METHOD</th>
<td>'POST'</td>
</tr>
<tr valign="top" align="left">
<th>HTTP_KEEP_ALIVE</th>
<td>'300'</td>
</tr>
<tr valign="top" align="left">
<th>SERVER_PROTOCOL</th>
<td>'HTTP/1.1'</td>
</tr>
<tr valign="top" align="left">
<th>channel.creation_time</th>
<td>1134149754</td>
</tr>
<tr valign="top" align="left">
<th>CONNECTION_TYPE</th>
<td>'keep-alive'</td>
</tr>
<tr valign="top" align="left">
<th>HTTP_ACCEPT_CHARSET</th>
<td>'ISO-8859-15,utf-8;q=0.7,*;q=0.7'</td>
</tr>
<tr valign="top" align="left">
<th>HTTP_USER_AGENT</th>
<td>'Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.8) Gecko/20051201
Firefox/1.5'</td>
</tr>
<tr valign="top" align="left">
<th>HTTP_REFERER</th>
<td>'http://gps.gp:8380/TESTORDNER/aufrufende_seite'</td>
</tr>
<tr valign="top" align="left">
<th>SERVER_NAME</th>
<td>'0.0.0.0'</td>
</tr>
<tr valign="top" align="left">
<th>REMOTE_ADDR</th>
<td>'192.168.11.5'</td>
</tr>
<tr valign="top" align="left">
<th>PATH_TRANSLATED</th>
<td>'/TESTORDNER/empfangendes_skript'</td>
</tr>
<tr valign="top" align="left">
<th>SERVER_PORT</th>
<td>'8380'</td>
</tr>
<tr valign="top" align="left">
<th>CONTENT_LENGTH</th>
<td>'123055'</td>
</tr>
<tr valign="top" align="left">
<th>HTTP_HOST</th>
<td>'gps.gp:8380'</td>
</tr>
<tr valign="top" align="left">
<th>HTTP_ACCEPT</th>
<td>
'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'</td>
</tr>
<tr valign="top" align="left">
<th>GATEWAY_INTERFACE</th>
<td>'CGI/1.1'</td>
</tr>
<tr valign="top" align="left">
<th>HTTP_ACCEPT_LANGUAGE</th>
<td>'de-at,de;q=0.8,en-us;q=0.5,en;q=0.3'</td>
</tr>
<tr valign="top" align="left">
<th>CONTENT_TYPE</th>
<td>'multipart/form-data;
boundary=---------------------------19162679010591482471812035653'</td>
</tr>
<tr valign="top" align="left">
<th>HTTP_ACCEPT_ENCODING</th>
<td>'gzip,deflate'</td>
</tr>
<tr valign="top" align="left">
<th>PATH_INFO</th>
<td>'/TESTORDNER/empfangendes_skript'</td>
</tr>
</table>
lg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Jens!jens hat geschrieben:Aber da sehe ich doch auch was von CONTENT_LENGTH... Könnte man das nicht direkt herranziehen???
Ich weiß es nicht genau und habe es nicht überprüft, denke aber, dass ich mit folgender Aussage richtig liege.
CONTENT_LENGTH bezieht sich auf die Summe aller Daten die an den Server geschickt wurden. Was aber tun, wenn du im Formular zwei oder mehr Dateien mitschickst? Auch wenn du nur eine Datei an den Server schickst -- es werden auch alle anderen übermittelten Daten mitgezählt, es ist also nur ein Annäherungswert.
lg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hallo,
also ich hab das jetzt auch mal versucht. Aber irgendwie klappt das bei mir nicht.
Ich lese die Datei so aus (das input feld heisst "datei" im HTML form):
Als Fehler wird jedoch
Danke schon mal.
also ich hab das jetzt auch mal versucht. Aber irgendwie klappt das bei mir nicht.
Ich lese die Datei so aus (das input feld heisst "datei" im HTML form):
Code: Alles auswählen
formular = context.REQUEST.form
datei = formular["datei"]
datei = datei.read()
return datei.len()
zurück geliefert. Könntet ihr mir da vielleicht behilflich sein?An error was encountered while publishing this resource.
Error Type: AttributeError
Error Value: 'str' object has no attribute 'getSize'
Danke schon mal.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Logdog82!Logdog82 hat geschrieben:zurück geliefert. Könntet ihr mir da vielleicht behilflich sein?Error Value: 'str' object has no attribute 'getSize'
Netter Avatar

Mach doch mal aus ``datei.len() `` ``len(datei)``.
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Die Anzahl der Zeichen. Wenn das vom Typ str ist, was es auch ist, ist dies equivalent zur byte anzahl.Logdog82 hat geschrieben:![]()
hehe danke
![]()
![]()
ist mir das peinlich. Ok das hat geklappt. uuuups. Super danke dir.
Sind das Bytes die zurück kommen oder?
TUFKAB – the user formerly known as blackbird