博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web.py大文件下载
阅读量:7284 次
发布时间:2019-06-30

本文共 811 字,大约阅读时间需要 2 分钟。

需要下载大文件的时候,如果先将文件直接读入内容再返回,那肯定就很浪费内存,甚至会崩溃。

所以我们需要读一些内容然后直接flush给客户端,但是web.py的文档里面却没有找到flush的方法。

不过在web.py的cookbook中的中看到可以直接yield返回内容。所以,我们可以使用yield来做flush做的事情。

BUF_SIZE = 262144class download:    def GET(self):        file_name = 'file_name'        file_path = os.path.join('file_path', file_name)        f = None        try:            f = open(file_path, "rb")            webpy.header('Content-Type','application/octet-stream')            webpy.header('Content-disposition', 'attachment; filename=%s.dat' % file_name)            while True:                c = f.read(BUF_SIZE)                if c:                    yield c                else:                    break        except Exception, e:            print e            yield 'Error'        finally:            if f:                f.close()

OK!

完鸟!

转载地址:http://bvzjm.baihongyu.com/

你可能感兴趣的文章
运维老鸟教你安装centos6.5如何选择安装包
查看>>
Entity Framework Code-First(13):Configure Many-to-Many
查看>>
Hash的应用
查看>>
如何解决缺少OCX问题,如何在win7 64位下注册OCX
查看>>
《程序员代码面试指南》第五章 字符串问题 将整数字符串转成整数值
查看>>
python模拟登录人人网
查看>>
SSM整合过程中出现的问题
查看>>
37、如何在函数中设置一个全局变量 ?
查看>>
java 类加载机制总结
查看>>
HDU 4417 Super Mario(2012杭州网络赛 H 离线线段树)
查看>>
62. Unique Paths不同路径
查看>>
观察者模式
查看>>
容器和算法2 - C++快速入门48(完)
查看>>
Survival Model介绍
查看>>
关于对handle的理解
查看>>
php+mysql将大数据sql文件导入数据库
查看>>
记第一次写博客
查看>>
绝对定位元素被遮挡
查看>>
用Python监听鼠标和键盘事件
查看>>
Interface和Abstract class区别
查看>>