webman 控制器返回遠(yuǎn)程服務(wù)器的文件流,參考了帖子
http://wtbis.cn/q/13212
public function streamFile()
{
$http = new \Workerman\Http\Client();
$url ='https://xxxx.cn/uploads/default/2024-10/09/670629b1d8f8a.jpeg';
$connection = \request()->connection;
// $http = new Client();
$http->request($url, [
'method' => 'GET',
'progress' => function($buffer) use ($connection) {
print_r($buffer);
$connection->send(new \Workerman\Protocols\Http\Chunk($buffer));
},
'success' => function($response) use ($connection) {
$connection->send(new \Workerman\Protocols\Http\Chunk('')); // 發(fā)送空的的chunk代表response結(jié)束
},
]);
$downloadName = uniqid().'.jpeg';
return response()->withHeaders([
"Content-Type" => "application/jpeg",
"Transfer-Encoding" => "chunked",
"Content-Disposition"=>"attachment;filename=\"$downloadName\""
]);
}
請求后下載的是一個(gè)空文件,
progress 回調(diào)內(nèi)也是可以讀取到文件的二進(jìn)制內(nèi)容的,
win10 調(diào)試
PHP 8.0.2
"workerman/http-client": "^2.2",
"workerman/webman-framework": "^1.5",
本地調(diào)試,沒有使用nginx 作為反向代理