from django.http import StreamingHttpResponse
def downloadFile(request):
download_name ='测试.docx'
the_file_name = str(download_name) # 显示在弹出对话框中的默认的下载文件名
filename = os.getcwd()+r'\templates\Doc\explore.docx' # 要下载的文件路径
response = StreamingHttpResponse(readFile(filename))
response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = "attachment; filename={}".format(the_file_name)
return response
下载文件名设置为英文或数字时可以正确下载。当文件名中包含中文,例如以上代码中的'测试.docx'会出现乱码。
print(response['Content-Disposition'])
结果:
=?utf-8?b?YXR0YWNobWVudDtmaWxlbmFtZSo9VVRGLTjllYrllYrllYouZG9jeA==?=
解决方法
使用指定编码,并告诉浏览器