在上一篇文章中,我们讨论了如何用python上传文件和操作文件属性。本文向您展示了如何在django框架下下载文件。
下载:最简单的方法
django最简单的下载方式
这种方法适用于小文件。如果文件很大,会消耗内存。
django中的HttpResponse对象可以将迭代器作为参数传递,这样就可以用迭代器替换上面的C,从而防止文件过大时下载失败。
但是,在django中,更推荐使用StreamingHttpResponse对象,它以流式方式将文件发送到浏览器。
检查django框架的源代码,比较HttpResponse和StreamingHttpResponse:
http响应源代码
StreamingHttpResponse源代码
源代码中的注释非常清楚。httpResponse是返回一个字符串作为内容。StreamingHttpResponse是将内容作为迭代器返回给客户端。
因此,修改上面的代码,将读取的文件作为迭代器写入,然后将这个迭代器作为参数传递给streamingHttpResponse对象:
Django实现文件下载功能。
您已经看到上面两行代码:
这是定义文件流的格式类型,响应[' content-type ']=' application/octet-stream '是二进制流数据(常见文件下载)。
响应['内容-处置']='附件;Filename='xxx ',这是设置显示的文件名。
至此,文件下载功能已经实现。
扩展思维:
如果想限制用户下载,只允许有权限的用户下载,该怎么办?