我在 Symfony 应用程序中使用 Flysystem 来管理 S3 上的文件上传/下载。
$downloadableFileStream = $this->get("filesystem")->readStream($document->getDocument()),
$mimeType = $this->get("filesystem")->getMimetype($document->getDocument()),
$filename =$document->getDocument()
if (ob_get_level()) ob_end_clean();
return new StreamedResponse(function () use ($downloadableFileStream, $mimeType, $filename) {
fpassthru($downloadableFileStream);
}, 200, [
'Content-Transfer-Encoding', 'binary',
'Content-Type' => "application/octet-stream",
'Content-Disposition' => ('attachment; filename="' . $filename . '"'),
'Content-Length' => fstat($downloadableFileStream)['size'],
]);
大文件真的很慢,我在想使用流不会把所有文件都放在内存中,也许我做错了什么?(我在上传时遇到同样的问题,我正在使用 putStream)。
小文件的下载是即时的,但对于大文件,似乎在启动下载之前将完整的文件加载到文件系统中。
有没有办法“开始”下载而不是获取整个文件?
有什么建议么 ?
谢谢 :)