首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Flysystem处理大文件

使用Flysystem处理大文件
EN

Stack Overflow用户
提问于 2018-05-21 18:02:45
回答 1查看 675关注 0票数 1

我在Symfony应用程序中使用Flysystem来管理S3上的文件上传/下载。

代码语言:javascript
复制
$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)。

对于小文件,下载是即时的,但对于大文件,在启动下载之前,整个文件似乎已经加载到文件系统中。

有没有办法“开始”下载而不是得到整个文件?

有什么建议吗?

谢谢:)

EN

回答 1

Stack Overflow用户

发布于 2018-05-21 19:21:42

尝试在fpassthru($downloadableFileStream);之后添加flush();

所以它看起来就像

代码语言:javascript
复制
fpassthru($downloadableFileStream);
flush();

此外,您不需要使用$mimeType$filename

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50446392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档