Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从存储文件夹中提供图像以在Laravel 5中查看_Php_Image_Laravel - Fatal编程技术网

Php 从存储文件夹中提供图像以在Laravel 5中查看

Php 从存储文件夹中提供图像以在Laravel 5中查看,php,image,laravel,Php,Image,Laravel,在浏览了几乎所有的谷歌搜索结果之后,我仍然无法修复这个问题 在我的应用程序中,用户可以上传图片。因为用户的数据非常敏感,所以我将所有内容都保存在存储文件夹中,并使用php为图像提供服务 查看 <img src="{{ asset('logo/' . $organization->logo_thumbnail_path) }}" alt=""> 路由在storage/app/img/logo中查找相应的文件名。如果我回显Storage::disk('logo-image')->

在浏览了几乎所有的谷歌搜索结果之后,我仍然无法修复这个问题

在我的应用程序中,用户可以上传图片。因为用户的数据非常敏感,所以我将所有内容都保存在存储文件夹中,并使用php为图像提供服务

查看

<img src="{{ asset('logo/' . $organization->logo_thumbnail_path) }}" alt="">
路由在
storage/app/img/logo
中查找相应的文件名。如果我回显
Storage::disk('logo-image')->get($logo)
,我会看到一个巨大的奇怪字符页面,这让我相信它确实得到了实际的.jpg图像

但是,即使我直接访问路线,图像也不会显示

此外,如果我更改路径以返回主页,并打开应在其中渲染图像的视图,则什么也不会发生。这让我相信,从未从
标记中调用路由

你们当中有人知道更多吗?我被困住了,几个小时的搜索什么也没做


编辑:手动设置响应中的所有标题和内容,确保显示图像。

似乎答案相当简单,我没有返回
$image->response()

所以
返回$image-response()一切正常


谢谢你,溺水

我在这里胡乱猜测,但我假设头是正确的?我使用的是干预/图像库,它声明我调用的response()方法应该提供所有正确的头。另外,如果我回显
$image->response
,我会看到另一个巨大的页面,上面有奇怪的字符。是的,这就是我在我的问题中所做的,只是它不起作用。这不是重复,因为他使用的第三方代码与这个问题毫无关系。有没有办法检查请求是否来自外部域?我的意思是,返回外部请求的图像,但如果用户直接在浏览器中输入路线,则显示视图。你的确切意思是什么?每个请求都是外部的,只要它不是来自执行代码的同一服务器。例如:
https://media.giphy.com/media/3ohzdNzYZoPbJwLHtC/giphy.gif
此gif可用于
img
标记,并加载图像。但是,如果我们直接在浏览器中访问链接,就会显示一个页面(不仅仅是图像)。这个问题很酷,我不知道giphy是如何解决这个问题的。我可以想象他们正在解析请求头以查看用户代理,然后使用javascript在图像周围显示html。也许值得为此问一个新问题,我找不到任何你想要的教程。(顺便说一句,呵呵)也许你想帮我一些想法:谢谢。
Route::get('logo/{logo}', function($logo) {

    $image = Image::make(Storage::disk('logo-image')->get($logo));
    $image->response();

});