swoft-cloud / swoft

🚀 PHP Microservice Full Coroutine Framework
https://swoft.org
Apache License 2.0
5.58k stars 786 forks source link

文件下载怎么实现 #500

Closed cgyhbc closed 5 years ago

cgyhbc commented 5 years ago

我们有个导出数据的功能,我想直接导出cvs格式的文件,swoft应该如何实现。

cgyhbc commented 5 years ago

小文件下载,只需要设置Response头就可以了,然后return 数据,代码如下:

$response = $response->withHeader('Content-Type', 'application/vnd.ms-excel');
$response = $response->withHeader('Content-Disposition', 'attachment;filename='.time().'.xls');
$response = $response->withHeader('Cache-Control', 'max-age=0');
RequestContext::setResponse($response);
return 'hello world';

但是如何实现大文件下载呢,swoole有一个 $server->write()方法,是通过chunk的方式实现大文件的下载功能,swoft的话,该如何实现?

alukaa commented 5 years ago

@cgyhbc 兄得,上传的图片显示怎么玩

wp-breeder commented 5 years ago

swoft 文档中有关于获取 swoolehttp response 对象的文档的说明,在 swoft-http-message 1.0.5 中已经可以使用,其他版本需要手动修改参考 (swoft-cloud / swoft-component#265)

更多介绍详见 swoole http-server 文档

stelin commented 5 years ago

建议升级到2.0, 2.0 已经正式发布,更稳定简单。