Solange Ihre Datei oder Ihr dateiähnliches Objekt iterierbar ist, geben Sie es nur von Ihrer Handler-Funktion anstelle einer Zeichenfolge zurück.
Update:
Um es als Download zu dienen, stellen Sie die Content-Type und Content-Disposition-Header wie folgt:
cherrypy.response.headers["Content-Type"] = "application/x-download"
cd = 'attachment; filename="%s"' % name
cherrypy.response.headers["Content-Disposition"] = cd
Oder verwenden Sie die serve_fileobj
Funktion in aktuellen Versionen von cherrypy/lib/static.py
, das tut das für dich und mehr.
Die Funktion serve_fileobj funktioniert perfekt dafür. (Es wäre hilfreich für die Gemeinschaft, wenn Sie die richtige Antwort akzeptieren würden.) –