我试图通过链接下载图片,该链接将我引导至此方法:
$image = $st->getFullPathWithImage(null, $type, true, true);
if ($image) {
$content_type = 'image/jpeg';
$basename = basename($image);
Download::add($st->id);
return Response::download($image, $basename, array('Content-Type: ' . $content_type));
}
如果我尝试调试 $ image 中的内容,我会从S3获取正确的URL,但该方法无法说明:
The file "path_to_my_bucket/uploads/14424179653mYJLut2zVEnyR30YQEm.jpg" does not exist
我猜这是由于我必须在S3 / AWS上设置的东西,但我对它是什么一无所知,以及如何将它绑定到Laravel的Response ::下载()。任何帮助表示赞赏。
答案 0 :(得分:2)
回答有同样问题的人。
原来S3与此问题无关。而不是使用Laravel的Response :: download(),我切换到手动,原始的php标头设置,事情确实有效。我不确定为什么常规的Laravel解决方案会返回404,但我需要一个简单快速的解决方案,这是我能找到的最好的。
因此,不要返回Response :: download(),而是执行此操作:
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=" . basename($image));
header("Content-Type: image/jpeg");
return readfile($image);
答案 1 :(得分:0)
还可以返回重定向到图片网址
return response()->redirectTo("https://s3-us-west-2.amazonaws.com/" . $document->path);
来源:https://laracasts.com/discuss/channels/laravel/file-response-from-s3