我知道这是可能的,但我似乎无法弄明白.
我有一个mySQL查询,有几十万个结果.我希望能够发送结果,但似乎响应需要内容长度标头才能开始下载.
在phpMyAdmin中,如果你去导出一个数据库,它立即开始下载,FF只是说未知的文件大小,但它的工作原理.我查看了那段代码,但无法理解.
救命?
谢谢.
第14.14节中的这个文件规定,在HTTP中,只要在传输之前确定消息的长度,就应该发送它,除非第4.4节中的规则禁止这样做.这意味着如果你不能说它的大小,就不必发送它.
只是不要发送它.
如果要在所有数据可用之前将部分数据发送到浏览器,是否要刷新输出缓冲区?也许这就是问题所在,而不是缺少标题?
你使用flush的方式是这样的:
生成一些输出,应将其添加到缓冲区
flush()它,它应该将当前缓冲区发送到客户端
转到1
因此,如果您的查询返回了大量结果,您可以生成输出,比如100或1000,然后刷新,依此类推.
此外,要告诉客户端浏览器尝试保存文件而不是在窗口中显示它,您也可以尝试使用Content-disposition:attachment标头.请参阅此处的规范,19.5.1部分.