使用 Django 提供可下载文件
网站上的用户通常需要能够下载文件,但保护文件并防止直接下载是很困难的至关重要的。一种解决方案是隐藏文件路径,以便用户无法直接访问它们。
要实现此目的,请创建一个包含参数的 URL,例如:
http://example.com/download/?f=somefile.txt
假设可下载文件驻留在文件夹 /home/user/files/ 中。 Django 可以配置为提供文件下载服务,而不需要特定的 URL 和视图来显示文件。
X-Sendfile 模块提供了最佳解决方案。它允许 Django 定位文件并指定其标头,而实际的文件服务由 Web 服务器(例如 Apache、Lighttpd)处理。安装并配置 mod_xsendfile 后,将其与您的视图集成:
from django.utils.encoding import smart_str response = HttpResponse(content_type='application/force-download') response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name) response['X-Sendfile'] = smart_str(path_to_file) return response
请注意,此方法需要服务器控制或支持 mod_xsendfile 的托管公司。
其他注意事项:
以上是Django 如何使用 X-Sendfile(或 X-Accel-Redirect)安全地提供可下载文件?的详细内容。更多信息请关注PHP中文网其他相关文章!