python后端向前台返回字节流文件,浏览器访问地址自动下载文件:
from django.http.response import StreamingHttpResponse
# 要下载的文件路径
the_file_name = "record.txt"
# 这里创建返回
response = StreamingHttpResponse(self.file_iterator(the_file_name))
# 注意格式
response['Content-Type'] = 'application/txt'
# 注意filename 这个是下载后的名字
response['Content-Disposition'] = 'attachment;filename="record.txt"'
return response
def file_iterator(self, file_name, chunk_size=512):
'''
# 用于形成二进制数据
:param file_name:
:param chunk_size:
:return:
'''
with open(file_name, 'rb') as f:
while True:
c = f.read(chunk_size)
if c:
yield c
else:
break