Erstmal ein Auszug aus dem Code:
Code: Alles auswählen
buffer = StringIO.StringIO()
z = zipfile.ZipFile(buffer, "w")
for file_info in files:
filename = file_info[0]
abs_path = posixpath.join(self.request_path, filename)
arcname = posixpath.join(artist, album, filename)
z.write(abs_path, arcname)
z.close()
buffer.seek(0,2) # Am Ende der Daten springen
buffer_len = buffer.tell() # Aktuelle Position
buffer.seek(0) # An den Anfang springen
filename = posixpath.split(self.request_path)[-1]
self.request.headers['Content-Disposition'] = 'attachment; filename="%s.zip"' % filename
self.request.headers['Content-Length'] = '%s' % buffer_len
self.request.headers['Content-Transfer-Encoding'] = 'binary'
self.request.headers['Content-Type'] = 'application/octet-stream;'# charset=utf-8'
def send_data(buffer):
while 1:
data = buffer.read(2048)
if not data:
return
yield data
time.sleep(0.1)
self.request.send_response(send_data(buffer))
Jemand einen Tipp für mich?