【发布时间】:2021-06-10 18:55:51
【问题描述】:
对于任何通过任何途径的有效二进制文件(pdf、图像等),我的下载始终为 0 字节。当我存储该文件或以其他方式访问它时,该文件是有效的。
如果我在任何有效的文本文件(csv、json、txt)上运行 response->download($somePath),则响应是有效且正确的!
我已经尝试过 streamDownload()、file(),我什至尝试过在没有 Symfony 的情况下手动发送响应。我尝试过使用 ob_clean()、flush() 等。我尝试了几种不同的标头,我尝试更改 Cache-Control... 没有任何效果。
这是在 php-fpm 上,带有 nginx,php 7.4。
$path = Storage::disk('test')->url('whatever.pdf');
dump(strlen(File::get($path)); // 5115
if (File::exists($path)) {
$r = response()
->download(
$path,
'whatever.pdf',
[
'content-length' => strlen(File::get($path)),
'Content-Type' => 'application/pdf'
]
);
// $r->headers->set('cache-control', 'private');
return $r; // 0 bytes returned!
}
``
【问题讨论】:
-
你尝试过什么调试问题?
标签: php laravel symfony nginx httpresponse