Django 返回流文件时使用中文文件名的问题

在响应头中添加 Content-Disposition 指定文件名,在 Chrome 浏览器中访问的时候返回的文件名始终是按 url 的最后一段自动生成的文件名,而将文件名改成英文以后又是正常的。
猜测应该是字符串编码的问题,http 响应头中字符应该按照 url 百分号编码。

修改为以下代码后,终于能够正常显示中文文件名了。

# Python3
from urllib.parse import quote
...
response['Content-Disposition'] = 'attachment; filename={0}.xlsx'.format(quote(filename))

Python2 中的 quote 方法引入位置有所不同,代码如下:

# Python2
from urllib import quote
...
# 向下兼容 Python2.6 以前的格式化字符串
response['Content-Disposition'] = 'attachment; filename=%s.xlsx' % quote(filename)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值