我对HTTP头有问题,它们是用ASCII编码的,我想提供一个下载文件的视图,文件名可以是非ASCII的.

response['Content-Disposition'] = 'attachment; filename="%s"' % (vo.filename.encode("ASCII","replace"), )

我不想使用静态文件来处理非ASCII文件名的相同问题,但在这种情况下,文件系统和文件名编码会出现问题.(我不知道目标操作系统.)

我已经试过了.quote(),但它会引发KeyError异常.

也许我做错了什么,但也许这是不可能的.

推荐答案

这是常见问题解答.

没有可互操作的方法来做到这一点.一些浏览器实现专有扩展(即Chrome),其他浏览器实现RFC 2231(Firefox、Opera).

请参阅http://greenbytes.de/tech/tc2231/的测试用例.

Update: as of November 2012, all current desktop browsers support the encoding defined in RFC 6266 and RFC 5987 (Safari >= 6, IE >= 9, Chrome, Firefox, Opera, Konqueror).

Django相关问答推荐

为什么当对字段使用自定义序列化器时,Django Rest框架中Inbox字段会消失?

构造一个定制字符串(实体、年份和字母数字的组合)作为Django中的Postgres数据库的主键是否明智?

没有与给定查询匹配的监视列表

在 Trunc 的 kind 属性中使用字段

如何从基于类的视图将用户保存在 django 模型中

反向 url django 管理员

如何重命名标准 django-registration 模板的名称

Django 和 HTML 无法从指定时间开始视频

在 Django 模板中呈现标签名称而不是整数字段

如果上下文中缺少变量,如何使 Django 模板引发错误

何时在 django 中使用 pre_save、save、post_save?

django 用一个提交按钮提交两种不同的表单

Django - 如何从模型实例中获取管理员 URL

django 静态文件版本控制

在 Celery 任务中运行 Scrapy 蜘蛛

如何动态访问 Django 模型字段详细名称?

Django中GROUP BY中注释的聚合

如何获取 pytz 时区的通用名称

django.core.servers.basehttp.FileWrapper 在 Django 1.9 中消失

获取'str'对象在Django中没有属性'get'