[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