主页

如果中间件请求接口返回是数据流时,这时没法直接将数据流直接输出到响应体的data中,需要在中间件中直接将文件下载下来

代码如下:

$response = HttpUtil::request($urlInfo, $paramsData, $method, $header, $returnBody);//文件流
$header = [
   'Content-Type'        => 'application/octet-stream',
   'Content-Disposition' => 'attachment; filename="' . rawurlencode('反馈列表.xlsx') . '"',
];
return response($response)->withHeaders($header);

备注:文件名如果涉及到中文,需要转义以后可以,否则下载文件名称乱码
附:urlencode和rawurlencode区别
urlencode:是一种将字符串进行编码的函数,主要用于将字符串转换为 URL 编码格式。它将字符串中的特殊字符(如空格、中文等)转换为%加上字符的 ASCII 码十六进制表示形式。这种编码方式在将数据作为 URL 的一部分进行传递时非常有用,比如在GET请求的查询字符串中。
rawurlencode:同样是用于 URL 编码的函数。它的主要目的也是对字符串进行编码,使其能够安全地用于 URL 中。与urlencode不同的是,它在编码时遵循 RFC 3986 标准,对于一些字符的编码方式更为严格和规范。

版权属于:三分快乐,七纷幸福
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
0
查看目录

目录

来自 《laravel 中间件接收文件流并下载示例》
评论

三分快乐,七纷幸福
104 文章数
7 评论量
11 分类数
107 页面数
已在风雨中度过 2年246天19小时11分