流文件下载
在我们用浏览器浏览网页时,浏览器会帮我们自动解析它支持的文件类型。但是有时我们需要让用户去保存这些文件,而不是让浏览器直接解析。所以这时就要对服务器发给浏览器的response做一些特别的设置,让浏览器不去解析这些文件。在response中需要去设置Content-Disposition和Content-Type的值。这样浏览器就不会去解析这些数据,而弹出下载框让用户下载。
django示例
1
2
3
4
5
|
file = open ( '/home/amarsoft/下载/example.tar.gz' , 'rb' ) response = HttpResponse( file ) response[ 'Content-Type' ] = 'application/octet-stream' response[ 'Content-Disposition' ] = 'attachment;filename="example.tar.gz"' return response |
但是这个文件名如果是中文发送到前端就会乱码, django可以通过url的编码方式来命名文件, 浏览器收到后能够解析成中文
1
2
3
|
from django.utils.encoding import escape_uri_path escape_uri_path( "文件名" ) |