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

时间:2016-06-10 01:30:35

标签: php pdf amazon-s3 laravel-5.2

我使用Laravel 5.2成功将.pdf文件上传到我的AWS S3存储桶。我可以直接访问AWS S3上的存储桶并下载每个.pdf而不会出现问题。当我尝试使用下面的代码下载某些.pdfs时,浏览器或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;

在浏览器中,我收到以下错误:Failed to load PDF document 在Acrobat Pro中,我收到以下错误:There was an error opening this document. The file is damaged and could not be repaired.

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

1 个答案:

答案 0 :(得分:0)

虽然我不清楚之前使用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);