A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

django提供文件下载,若果文件较小,解决办法是先将要传送的内容全生成在内存中,然后再一次性传入响应对象中,如下:
[Python] 纯文本查看 复制代码
def file_download(request):
        # do something...
        content = open("file_name", "rb").read()
        return HttpResponse(content)


但是当文件内容很大时,这种方法就不行了,django文档中提到,可以向HttpResponse传递一个迭代器,流式的向客户端传递数据,如下:
[Python] 纯文本查看 复制代码
def read_file(filename, buf_size=4096):
        with open(filename, "rb") as f:
        while True:
                content = f.read(buf_size)
                if content:
                      yield content
                else:
                      break
def big_file_download(request):
        filename = "filename"
        response = HttpResponse(read_file(filename))
        return response



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马