如何在 Laravel 6 中 return 图片?

How to return image in Laravel 6?

我有这个代码:

public function showImage($id) {
    $item = File::find($id);

    return response()->file($item->file_name_and_path);
}

$item->file_name_and_path 包含以下内容:

files/2020/04/29/myfile.jpeg

现在我总是得到 FileNotFoundException

图片文件在本地 driver 这个路径中:

{laravel root}/storage/app/files/2020/04/29/myfile.jpeg

我怎样才能获得正确的本地路径或简单地 return 带有图像 HTTP headers 的图像文件?

您可以为此使用 Storage facade:

use Illuminate\Support\Facades\Storage;

public function showImage($id) {
    $item = File::find($id);

    return Storage::response($item->file_name_and_path);
}

如您所见here,它会在响应中添加以下内容headers:

'Content-Type'
'Content-Length'
'Content-Disposition'