django HttpResponse 下载文件
时间: 2023-11-29 09:06:32 浏览: 103
HTTP文件下载
在 Django 中,可以使用 HttpResponse 对象来下载文件。以下是一个示例视图函数,它将返回一个包含文件的 HttpResponse 对象,从而使浏览器下载该文件。
```python
from django.http import HttpResponse
from django.conf import settings
import os
def download_file(request):
file_path = os.path.join(settings.MEDIA_ROOT, 'path_to_file') # 文件路径
if os.path.exists(file_path):
with open(file_path, 'rb') as fh:
response = HttpResponse(fh.read(), content_type="application/vnd.ms-excel")
response['Content-Disposition'] = 'attachment; filename=' + os.path.basename(file_path)
return response
raise Http404
```
在上面的代码中,我们首先获取要下载的文件的路径。然后,我们检查文件是否存在。如果文件存在,我们使用 Python 的内置 open() 函数打开文件并使用 HttpResponse 对象将其作为响应发送回客户端。我们还设置了响应的 content_type 和 Content-Disposition 标头,以指示浏览器将其作为附件下载。请注意,这里的 content_type 可以更改为您要下载的文件类型的 MIME 类型。
最后,如果文件不存在,则引发 Http404 异常。
阅读全文