首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
http服务中,使用write分段输出文件。设置header总文件长度无用
```php <?php declare(strict_types=1); $http = new Swoole\Http\Server('0.0.0.0', 9595); $http->on('request', function ($request, $response) { $file = __DIR__ . '/test.apk'; $filesize = filesize($file); $response->header('content-description', 'file transfer'); $response->header('content-type', 'application/octet-stream'); $response->header('content-disposition', 'attachment; filename=' . basename($file)); $response->header('content-transfer-encoding', 'binary'); $response->header('expires', '0'); $response->header('cache-control', 'must-revalidate, post-check=0, pre-check=0'); $response->header('pragma', 'public'); $response->header('content-length', (string) $filesize); $response->header('accept-length', (string) $filesize); print_r($request); $fp = fopen($file, 'r'); while (! feof($fp)) { $data = fread($fp, 150 * 1024); if (! $response->write($data) || ! $data) { break; } } fclose($fp); $response->end(); }); $http->start(); ``` 在下载文件的时候,不显示文件总长度为什么@
发布于4年前 · 19 次浏览 · 来自
提问
mxwei
```php <?php declare(strict_types=1); $http = new Swoole\Http\Server('0.0.0.0', 9595); $http->on('request', function ($request, $response) { $file = __DIR__ . '/test.apk'; $filesize = filesize($file); $response->header('content-description', 'file transfer'); $response->header('content-type', 'application/octet-stream'); $response->header('content-disposition', 'attachment; filename=' . basename($file)); $response->header('content-transfer-encoding', 'binary'); $response->header('expires', '0'); $response->header('cache-control', 'must-revalidate, post-check=0, pre-check=0'); $response->header('pragma', 'public'); $response->header('content-length', (string) $filesize); $response->header('accept-length', (string) $filesize); print_r($request); $fp = fopen($file, 'r'); while (! feof($fp)) { $data = fread($fp, 150 * 1024); if (! $response->write($data) || ! $data) { break; } } fclose($fp); $response->end(); }); $http->start(); ``` 在下载文件的时候,不显示文件总长度为什么@
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2022-07-29
Rango
`Http-Chunk`模式是没有长度的,它是一种流式传输的方式。
赞
1
回复
2022-08-02
mxwei
谢谢, 不过文件好像没有立即下载。有没有什么办法让文件立即下载,像 sendfile() ?
赞
0
回复
2022-08-02
mxwei

赞
0
回复