这可能是一个简单的问题,但我不知何故找不到解决方案。 Django 提供了很多有关上传文件的信息,但是如何下载文件。
假设我们有一个 HTML 按钮uploads/something.txt
作为一个文件。
我尝试过django.views.static.serve
,但是这会在网页上打开一个文件。
我的问题很简单:我们网站的用户下载文件的最佳且最Pythonic的方式是什么?
- 您需要阅读该文件。
- 使用
HttpResponse
以及适当的内容类型。
这是一些示例代码:
content = open("uploads/something.txt").read()
return HttpResponse(content, content_type='text/plain')
这应该提供一个文本文件。
但正如您所描述的,在某些浏览器上,它不会要求下载文件,而是会在浏览器中显示它。如果您想显示下载提示,请使用以下命令:
response = HttpResponse(open("uploads/something.txt", 'rb').read())
response['Content-Type'] = 'text/plain'
response['Content-Disposition'] = 'attachment; filename=DownloadedText.txt'
return response
但是,请注意,通过 nginx 或您选择的反向代理提供静态内容或上传的文件可能是更好的主意。通过 Django 发送大文件可能不是最好的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)