2016-03-31 6 views
1

Ich versuche, die Daten aus POST-Körper, der Transfer-Encoding: chunked Header hat (Content-Length) nicht zu bekommen. Der Inhaltstyp ist application/octet-stream.CherryPy So lesen Sie Chunked Encoded Request Body

Ich versuchte

cherrypy.request.body.read() 

Aber es fror und kehrte 500

Ich habe auch versucht

buffer = cherrypy.request.body.read(1024) 

aber nicht weiß, wann das Lesen zu stoppen. Hat jemand einen Vorschlag?

Antwort

2

Hier ist der Code, den ich verwendet habe.

def POST(self): 
    f = open('tmp','wb') 
    cherrypy.request.rfile.bufsize = 1024 * 1024 * 5 #adjust buffer size here 
    while True: 
     cherrypy.request.rfile._fetch();    #reading data 
     if cherrypy.request.rfile.closed:    #end of stream checking 
      break 
     buffer = cherrypy.request.rfile.buffer  #your data is here 
     cherrypy.request.rfile.buffer = ""   #clearing buffer 
     f.write(buffer)        #consume it 

    f.close() 
    return "done" 
+1

Vielen Dank für Ihre Lösung :) – zjm555