From 7203efb799969b4662ecb58f4cefd2a5f2e0062b Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Sat, 17 Aug 2019 09:20:36 +0200 Subject: [PATCH] Fixed #30694 -- Documented FileResponse does not seek its file source. --- docs/howto/outputting-pdf.txt | 1 + docs/ref/request-response.txt | 2 ++ 2 files changed, 3 insertions(+) diff --git a/docs/howto/outputting-pdf.txt b/docs/howto/outputting-pdf.txt index 34172f4087..8549b0e380 100644 --- a/docs/howto/outputting-pdf.txt +++ b/docs/howto/outputting-pdf.txt @@ -67,6 +67,7 @@ Here's a "Hello World" example:: # FileResponse sets the Content-Disposition header so that browsers # present the option to save the file. + buffer.seek(0) return FileResponse(buffer, as_attachment=True, filename='hello.pdf') The code and comments should be self-explanatory, but a few things deserve a diff --git a/docs/ref/request-response.txt b/docs/ref/request-response.txt index 19593dfb90..3dfbf28cf6 100644 --- a/docs/ref/request-response.txt +++ b/docs/ref/request-response.txt @@ -1122,6 +1122,8 @@ Attributes If ``open_file`` doesn't have a name or if the name of ``open_file`` isn't appropriate, provide a custom file name using the ``filename`` parameter. + Note that if you pass a file-like object like ``io.BytesIO``, it's your + task to ``seek()`` it before passing it to ``FileResponse``. The ``Content-Length`` and ``Content-Type`` headers are automatically set when they can be guessed from contents of ``open_file``.