Fixed #19006 - Quoted filenames in Content-Disposition header.
This commit is contained in:
parent
1c03b23567
commit
234ca6c61d
|
@ -21,7 +21,7 @@ Here's an example::
|
||||||
def some_view(request):
|
def some_view(request):
|
||||||
# Create the HttpResponse object with the appropriate CSV header.
|
# Create the HttpResponse object with the appropriate CSV header.
|
||||||
response = HttpResponse(mimetype='text/csv')
|
response = HttpResponse(mimetype='text/csv')
|
||||||
response['Content-Disposition'] = 'attachment; filename=somefilename.csv'
|
response['Content-Disposition'] = 'attachment; filename="somefilename.csv"'
|
||||||
|
|
||||||
writer = csv.writer(response)
|
writer = csv.writer(response)
|
||||||
writer.writerow(['First row', 'Foo', 'Bar', 'Baz'])
|
writer.writerow(['First row', 'Foo', 'Bar', 'Baz'])
|
||||||
|
@ -93,7 +93,7 @@ Here's an example, which generates the same CSV file as above::
|
||||||
def some_view(request):
|
def some_view(request):
|
||||||
# Create the HttpResponse object with the appropriate CSV header.
|
# Create the HttpResponse object with the appropriate CSV header.
|
||||||
response = HttpResponse(mimetype='text/csv')
|
response = HttpResponse(mimetype='text/csv')
|
||||||
response['Content-Disposition'] = 'attachment; filename=somefilename.csv'
|
response['Content-Disposition'] = 'attachment; filename="somefilename.csv"'
|
||||||
|
|
||||||
# The data is hard-coded here, but you could load it from a database or
|
# The data is hard-coded here, but you could load it from a database or
|
||||||
# some other source.
|
# some other source.
|
||||||
|
|
|
@ -52,7 +52,7 @@ Here's a "Hello World" example::
|
||||||
def some_view(request):
|
def some_view(request):
|
||||||
# Create the HttpResponse object with the appropriate PDF headers.
|
# Create the HttpResponse object with the appropriate PDF headers.
|
||||||
response = HttpResponse(mimetype='application/pdf')
|
response = HttpResponse(mimetype='application/pdf')
|
||||||
response['Content-Disposition'] = 'attachment; filename=somefilename.pdf'
|
response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"'
|
||||||
|
|
||||||
# Create the PDF object, using the response object as its "file."
|
# Create the PDF object, using the response object as its "file."
|
||||||
p = canvas.Canvas(response)
|
p = canvas.Canvas(response)
|
||||||
|
@ -87,7 +87,7 @@ mention:
|
||||||
the PDF using whatever program/plugin they've been configured to use for
|
the PDF using whatever program/plugin they've been configured to use for
|
||||||
PDFs. Here's what that code would look like::
|
PDFs. Here's what that code would look like::
|
||||||
|
|
||||||
response['Content-Disposition'] = 'filename=somefilename.pdf'
|
response['Content-Disposition'] = 'filename="somefilename.pdf"'
|
||||||
|
|
||||||
* Hooking into the ReportLab API is easy: Just pass ``response`` as the
|
* Hooking into the ReportLab API is easy: Just pass ``response`` as the
|
||||||
first argument to ``canvas.Canvas``. The ``Canvas`` class expects a
|
first argument to ``canvas.Canvas``. The ``Canvas`` class expects a
|
||||||
|
@ -121,7 +121,7 @@ Here's the above "Hello World" example rewritten to use :mod:`io`::
|
||||||
def some_view(request):
|
def some_view(request):
|
||||||
# Create the HttpResponse object with the appropriate PDF headers.
|
# Create the HttpResponse object with the appropriate PDF headers.
|
||||||
response = HttpResponse(mimetype='application/pdf')
|
response = HttpResponse(mimetype='application/pdf')
|
||||||
response['Content-Disposition'] = 'attachment; filename=somefilename.pdf'
|
response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"'
|
||||||
|
|
||||||
buffer = BytesIO()
|
buffer = BytesIO()
|
||||||
|
|
||||||
|
|
|
@ -590,7 +590,7 @@ To tell the browser to treat the response as a file attachment, use the
|
||||||
this is how you might return a Microsoft Excel spreadsheet::
|
this is how you might return a Microsoft Excel spreadsheet::
|
||||||
|
|
||||||
>>> response = HttpResponse(my_data, content_type='application/vnd.ms-excel')
|
>>> response = HttpResponse(my_data, content_type='application/vnd.ms-excel')
|
||||||
>>> response['Content-Disposition'] = 'attachment; filename=foo.xls'
|
>>> response['Content-Disposition'] = 'attachment; filename="foo.xls"'
|
||||||
|
|
||||||
There's nothing Django-specific about the ``Content-Disposition`` header, but
|
There's nothing Django-specific about the ``Content-Disposition`` header, but
|
||||||
it's easy to forget the syntax, so we've included it here.
|
it's easy to forget the syntax, so we've included it here.
|
||||||
|
|
Loading…
Reference in New Issue