diff --git a/rhodecode/controllers/files.py b/rhodecode/controllers/files.py --- a/rhodecode/controllers/files.py +++ b/rhodecode/controllers/files.py @@ -303,7 +303,21 @@ class FilesController(BaseRepoController response.content_disposition = 'attachment; filename=%s-%s%s' \ % (repo_name, revision, ext) - return cs.get_chunked_archive(stream=None, kind=fileformat) + import tempfile + archive = tempfile.mkstemp()[1] + t = open(archive, 'wb') + cs.fill_archive(stream=t, kind=fileformat) + + def get_chunked_archive(archive): + stream = open(archive, 'rb') + while True: + data = stream.read(4096) + if not data: + os.remove(archive) + break + yield data + + return get_chunked_archive(archive) @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', 'repository.admin')