django FileResponse application/octet-stream 文件名中文无法正常显示
时间: 2023-07-04 17:23:11 浏览: 168
django-eventstream:Django的服务器发送事件
您好,这是一个常见的问题,可能是由于文件名中使用了中文字符导致的。在 Django 中,可以使用 `urllib.parse.quote()` 方法对文件名进行 URL 编码,以解决中文文件名无法正常显示的问题。以下是一个示例代码:
```python
from django.http import FileResponse
import urllib.parse
def download_file(request):
# 获取文件路径和文件名
file_path = '/path/to/file'
file_name = '中文文件名.txt'
# 将文件名进行 URL 编码
encoded_file_name = urllib.parse.quote(file_name)
# 构造 FileResponse 并设置文件名
response = FileResponse(open(file_path, 'rb'))
response['Content-Disposition'] = f'attachment; filename*=UTF-8\'\'{encoded_file_name}'
return response
```
在上述代码中,`Content-Disposition` 头部中的 `filename*=UTF-8''` 表示使用 UTF-8 编码的文件名,后面的 `encoded_file_name` 则是经过 URL 编码的文件名。这样就可以保证中文文件名能够正常显示了。
阅读全文