无法显示图像;拉拉韦尔

时间:2019-07-15 15:46:59

标签: php laravel image

我有一个laravel 5.7项目,试图将图像渲染到浏览器。

如果我只是获取文件的内容,则其工作方式如下:

$contents = Storage::disk($file->disk)->get($file->path);

$new = 'data:'.$file->mimetype.';base64,' . base64_encode($contents);
echo '<img src="'. $new .'">';

通过使用上面的代码,我可以看到图像,就像我们在带有img标签的html文件中看到的图像一样。但是我不要这个!

我只想渲染图像,就像我们在浏览器中看到图像一样!因此,我尝试将标题类型附加如下:

$contents = Storage::disk($file->disk)->get($file->path);

return response($contents)
        ->header('Content-Type', $file->mimetype)
        ->header('Content-Disposition', 'inline;');

上面的代码不起作用,并且由于“图像[url]包含错误”而无法显示,因此出现错误;

我不知道我在这里想什么!

我不想将这些图像文件保留在公共区域,并且PDF文件在相同的方式下也能正常工作。

1 个答案:

答案 0 :(得分:0)

如果使用本地磁盘,则可以返回如下文件:

return response()->file('/your/file/path/image.png');

编辑

回应您的评论...

我提到了local磁盘,而不是public磁盘。他们是两个不同的东西。您仍然可以将其与受保护的文件一起使用。

public function show(File $file)
{
    // allow or deny according to File Policy
    // you would need to create a policy if you don't already have one
    $this->authorize('view', $file);

    // serve the local file
    return response()->file(storage_path($file->path));
}