Update response.md

This commit is contained in:
huangzhhui 2019-08-29 16:49:30 +08:00
parent 2c48d97859
commit 79d6a07f76

View File

@ -125,20 +125,31 @@ class IndexController
## 分块传输编码 Chunk
## 返回文件下载
## 文件下载
`Hyperf\HttpServer\Contract\ResponseInterface` 提供了 `download(string $file, string $name = '')` 返回一个已设置下载文件状态的 `Psr7ResponseInterface` 对象。
如果请求中带有 `if-match``if-none-match` 的请求头Hyperf 也会跟根据协议标准与 `ETag` 进行比较,如果一致则会返回一个 `304` 状态码的响应。
`download` 方法:
| 参数 | 类型 | 默认值 | 备注 |
|:-------------------:|:------:|:---------------:|:------------------:|
| file | string | 无 | 要返回下载文件的绝对路径,同通过 BASE_PATH 常量来定位到项目的根目录 |
| name | string | 无 | 客户端下载文件的文件名,为空则会使用下载文件的原名 |
```php
<?php
namespace App\Controller;
use Hyperf\HttpMessage\Server\Response;
use Hyperf\HttpServer\Contract\ResponseInterface;
use Psr\Http\Message\ResponseInterface as Psr7ResponseInterface;
class IndexController
{
public function download(ResponseInterface $response): Psr7ResponseInterface
public function index(ResponseInterface $response): Psr7ResponseInterface
{
// download() 方法返回的是一个 Psr\Http\Message\ResponseInterface 对象,需再 return 回去
return $response->download('/var/www/file.csv','filename.csv');
return $response->download(BASE_PATH . '/public/file.csv', 'filename.csv');
}
}
```