Django 返回流文件时使用中文文件名的问题
最近有一个需求,需要根据请求参数,从数据库获取指定数据动态生成 Excel 表格文件,并以流的形式返回。
在测试的过程中发现了一个问题,无论我怎么在响应头中添加 Content-Disposition 指定文件名,在 Chrome 浏览器中访问的时候返回的文件名始终是按 url 的最后一段自动生成的文件名,而将文件名改成英文以后又是正常的。
猜测应该是字符串编码的问题,http 响应头中字符应该按照 url 百分号编码。
修改为以下代码后,终于能够正常显示中文文件名了。
1 | # Python3 |
Python2 中的 quote 方法引入位置有所不同,代码如下:
1 | # Python2 |
Django 返回流文件时使用中文文件名的问题
https://blog.dennic365.com/2017/10/28/django-response-filename-chinese/