Php 某些.pdf文件下载在浏览器/Acrobat Pro中损坏-使用Laravel&;AWS S3

Php 某些.pdf文件下载在浏览器/Acrobat Pro中损坏-使用Laravel&;AWS S3,php,pdf,amazon-s3,laravel-5.2,Php,Pdf,Amazon S3,Laravel 5.2,我正在使用Laravel 5.2成功地将.pdf文件上载到我的AWS S3存储桶。我可以直接转到AWSS3上的bucket并毫无问题地下载每个.pdf文件。当我尝试使用下面的代码下载某些.pdf时,浏览器或Acrobat Pro无法打开该文件。代码如下: $file = Storage::disk('s3')->get($myfile); // Set headers and force download header("Content-type:application/pdf"); h

我正在使用Laravel 5.2成功地将.pdf文件上载到我的AWS S3存储桶。我可以直接转到AWSS3上的bucket并毫无问题地下载每个.pdf文件。当我尝试使用下面的代码下载某些.pdf时,浏览器或Acrobat Pro无法打开该文件。代码如下:

$file = Storage::disk('s3')->get($myfile);

// Set headers and force download
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename=file.pdf");
echo $file;
在浏览器中,我收到以下错误:
未能加载PDF文档
在Acrobat Pro中,我遇到以下错误:
打开此文档时出错。文件已损坏,无法修复。


pdf可以在其他苹果程序中成功打开,如Preview或Skim。此外,可以成功上载和下载较旧的.pdf文件。

但我不清楚以前使用echo$文件时出现了什么问题,当修改为使用Laravel方法
return Response::make($file,200,$headers)时,它现在可以工作了


虽然我不清楚以前使用
echo$file的问题是什么
,当修改为使用Laravel方法
return Response::make($file,200,$headers)时,它现在可以工作了

// Get the file from s3
$file = Storage::disk('s3')->get($myfile);

// Set headers
$headers = array(
    'Content-type' => 'application/pdf',
    'Content-Disposition'   => 'attachment; filename=filename=file.pdf"
);

// Download
return Response::make($file, 200, $headers);