我使用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文件。
答案 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);