如何解决如何使用耗材下载文件并将其转发到响应而不在本地保存
我正在使用Laravel,我想从api获取文件(提供令牌和一些标头),然后将其直接转发到响应,而无需在本地保存文件。
目前我正在这样做:
$response = $client->get($requestUrl,[
'query' => [
'hash' => $hash
],'headers' => [
'_token_' => $oauthConfig['api_token'],'_token_issuer_' => 1
],'stream' => true,]);
$type = $response->getHeader('Content-Type')[0];
$body = $response->getBody();
$response = new StreamedResponse(function () use ($body) {
while (!$body->eof()) {
echo $body->read(1024);
}
});
$response->headers->set('Content-Type',$type);
return $response;
但是我遇到了这个异常:
LogicException
The content cannot be set on a StreamedResponse instance.
非常感谢您的帮助/指导! 谢谢。
解决方法
似乎正确的做法是
http://docs.guzzlephp.org/en/stable/psr7.html
use GuzzleHttp\Stream\Stream;
$response = $client->get($requestUrl,[
'query' => [
'hash' => $hash
],'headers' => [
'_token_' => $oauthConfig['api_token'],'_token_issuer_' => 1
],'stream' => true,]);
$result = '';
while(!$response->getBody()->eof()){
$result .= $response->getBody()->read(8192);
}
$filename = 'test.gif';
return response()->streamDownload(function () use ($result) {
echo $result;
},$filename);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。