Closed cgyhbc closed 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的话,该如何实现?
@cgyhbc 兄得,上传的图片显示怎么玩
swoft
文档中有关于获取 swoole
的 http response
对象的文档的说明,在 swoft-http-message 1.0.5
中已经可以使用,其他版本需要手动修改参考 (swoft-cloud / swoft-component#265
)
write
方式:
//设置header头
$response->getSwooleResponse()->header('Content-Type', 'application/octet-stream');
$response->getSwooleResponse()->header('Content-Disposition',
'attachment;filename=test_' . time());
$response->getSwooleResponse()->header('Cache-Control', 'max-age=0');
//使用write 通过chunk方式
return $response->getSwooleResponse()->write($data);
sendfile
方式:
//设置header头
$response->getSwooleResponse()->header('Content-Type', 'application/octet-stream');
$response->getSwooleResponse()->header('Content-Disposition',
'attachment;filename=test_' . time());
$response->getSwooleResponse()->header('Cache-Control', 'max-age=0');
// 通过sendfile api 实现下载文件 (会有警告信息,Http request is finished,因为请求已经end)
return $response->getSwooleResponse()->sendfile($filePath);
public
下,也可以实现文件下载,文档详见 document_root
配置 更多介绍详见 swoole http-server
文档
建议升级到2.0, 2.0 已经正式发布,更稳定简单。
我们有个导出数据的功能,我想直接导出cvs格式的文件,swoft应该如何实现。