[python] cgi.FieldStorage, cherrypy
Jan Fuchs
fuky na sunstel.asu.cas.cz
Pátek Říjen 16 23:27:09 CEST 2009
Zdravím,
používám cgi '2.6' a cherrypy '3.0.2' na Debian Lenny. Mám problém s uploadem
souboru. Někdy dostanu soubor správné velikosti tj. např. 177200B, ale někdy je
oříznut o měnící se počet bajtů např. 537. Pro ukázku posílám testovací server,
dám několik uploadů stejného souboru za sebou, ale pokaždé dostanu jinou velikost.
Ani když použiji pro přístup k datům přímo params["data"].file tj. instace
objektu cgi.FieldStorage, nic se nezmění a problém přetrvává.
Chová se mi to stejně jak na binárních, tak na obyčejných ASCII souborech.
Netuší někdo v čem je problém?
#!/usr/bin/env python2.5
# -*- coding: utf-8 -*-
import cherrypy
class RootServer:
@cherrypy.expose
def index(self, *vdir, **params):
method = cherrypy.request.method
if (method != "POST"):
return """
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Upload</title></head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="data">
<input type="submit" value="Upload">
</form>
</body>
</html>
"""
else:
return "%i\n" % len(params["data"].value)
def main():
config = {
'global': {
'server.socket_port': 8000,
'server.ssl_certificate': 'cert.pem',
'server.ssl_private_key': 'key.pem',
}
}
cherrypy.quickstart(RootServer(), '/', config=config)
if __name__ == '__main__':
main()
S pozdravem Jan Fuchs
--
/**************************************************************
* _ Žádný program není bezchybný, dokonalý ani nejlepší, *
* °v° to samé platí i o lidech a nejen o nich. *
* /(_)\ -- Jan Fuchs -- *
* ^ ^ *
* http://www.fuky.org Jabber: jan.fuchs.cz na gmail.com *
**************************************************************/
Další informace o konferenci Python