在构建带有流式内容(巨大的 xlsx 文件内容)的苗条(苗条 4)响应时遇到问题。
$fileHandler = \fopen(getenv('SHARED_FILES_PATH') . $filename, 'r');
if (!$fileHandler) {
throw new \Exception('Unable to open file ' . getenv('SHARED_FILES_PATH') . $filename . ' for reading.');
}
$stream = GuzzleHttp\Psr7\Utils::streamFor($fileHandler);
// $this->response is Psr\Http\Message\ResponseInterface
$response = $this->response;
$response = $response->withHeader('Content-Disposition', 'attachment; filename="' . $filename . '"');
$response = $response->withHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
$response = $response->withBody($stream);
return $response;
错误:致命错误:未捕获的 RuntimeException:无法从第 232 行的 /home/vincent/workspace/opco2i_applis/opco2i_porttail/server/vendor/guzzlehttp/psr7/src/Stream.php 中的流中读取
我做了一些检查,文件存在并且可读。如果我在 fopen 调用后执行以下操作:
$contents = '';
while (!feof($fileHandler)) {
$contents .= fread($fileHandler, 8192);
break;
}
fclose($fileHandler);
var_dump($contents);die();
,我可以阅读我的文件的一些内容。
你能帮我找出为什么 guzzle stream 在这种情况下不能工作吗?