我有一个Django视图( download-attachment ),它返回一个django.http.response.HttpResponse对象。
对象的字典表示为:
{
'reason_phrase': u'OK',
'_handler_class': None,
'_headers': {'content-length': ('Content-Length', '21'),
'content-type': ('Content-Type', 'text/plain'),
'content-disposition': ('Content-Disposition', 'attachment;
filename="upload_file.txt"')
},
'_charset': None,
'_closable_objects': [],
'cookies': <SimpleCookie: >,
'closed': False,
'_container': ['Upload to file\n']
}
在模板中,单击超链接即可呈现视图:
<a href="{% url "download-attachment" certificationID=certificationID fileID=attachment.id %}" download> {{attachment.name}}</a>
此处,certificationID和fileID是下载附件视图的网址参数。
在chrome中,单击超链接时,文件将作为附件下载,其中包含在响应的Content-Disposition标题中给出的文件名。
在firefox中,文件下载失败。需要帮助使文件下载在firefox中工作。
答案 0 :(得分:0)
不是客户端或模板问题。 Firefox需要在响应标头中设置Content-Encoding实体以下载文件附件。即使没有编码,也需要设置标头。添加了内容 - 编码Django HttpResponse对象。
对象的新字典表示为:
{
'reason_phrase': u'OK',
'_handler_class': None,
'_headers': {'content-length': ('Content-Length', '21'),
'content-type': ('Content-Type', 'text/plain'),
'content-encoding': ('Content-Encoding', 'None'),
'content-disposition': ('Content-Disposition', 'attachment;
filename="upload_file.txt"')
},
'_charset': None,
'_closable_objects': [],
'cookies': <SimpleCookie: >,
'closed': False,
'_container': ['Upload to file\n']
}