Пирамида FileResponse для динамических c файлов - PullRequest
1 голос
/ 27 января 2020

Я хочу, чтобы мой клиент загружал (не отображал) динамически сгенерированный файл PDF через пирамиду. Сейчас я делаю это так:

def get_pdf(request):
    pdfFile = open('/tmp/example.pdf', "wb")
    pdfFile.write(generator.GeneratePDF())

    response = FileResponse('/tmp/example.pdf')
    response.headers['Content-Disposition'] = ('attachment;  filename=example.pdf')
    return response

С точки зрения клиента это именно то, что мне нужно. Тем не менее, 1. Он оставляет потерянный файл 2. Он не является потокобезопасным (хотя я мог бы использовать произвольные имена файлов)

В документах говорят:

class FileResponse

Объект Response, который можно просто использовать для обслуживания файла stati c с диска.

Так что FileResponse, вероятно, не то, что я должен использовать , Как бы вы заменили его чем-то более динамичным c, но неотличимым для клиента?

1 Ответ

1 голос
/ 27 января 2020

Просто используйте обычный ответ с тем же заголовком:

def get_pdf(request):
    response = Response(body=generator.GeneratePDF())
    response.headers['Content-Disposition'] = ('attachment;filename=example.pdf')
    return response
...