Laravel / Symfony:响应下载文件未返回正确的大小

时间:2019-05-06 16:28:50

标签: php laravel symfony

我使用Nginx + PHP-FPM和Amazon Linux 2服务器。

我有一个名为myplugin.zip的文件,大小为34KB

[root@ip-172-33-4-164 laravel-app]# ls -la /tmp/R2birI4LuZ/myplugin.zip
-rw-r--r-- 1 nginx nginx 35889 May  6 16:21 /tmp/R2birI4LuZ/myplugin.zip

使用lunix上的“ unzip”文件可以完美解压缩。

但是,当我尝试使用Symfony的Binary类作为响应发送文件时:

$path = /tmp/R2birI4LuZ/myplugin.zip;

$headers = [
    'Content-Type' => 'application/zip',
    'Content-Transfer-Encoding' =>  'Binary',
    'Content-Disposition' => 'attachment; filename='.basename($path),
    "Content-Length: ".filesize($path)
];

$response = new \Symfony\Component\HttpFoundation\BinaryFileResponse($path, 200 , $headers);
return $response;

我也尝试过

通过Chrome返回到我的MacOS的文件大小错误并且已损坏

-rw-r--r--@ 1 Dev-Mac  staff  59940 May  6 18:21 myplugin.zip

请注意,我还尝试了以下Laravel download()并返回了相同的大小(59940字节): https://laravel.com/docs/5.8/responses#file-downloads

1 个答案:

答案 0 :(得分:0)

您是否尝试过仅保留文件大小? 只是return new BinaryFileResponse($path);