嘿,所以我正试图把我的图像到幻灯片,我有我的索引。图像保存在storage/app
上,然后我从数据库中检索其余的路径。
我设法在<img src>
标签上输出了正确的路径,标题得到了预期的输出,但图像没有。
我从控制器发送和数组,然后在我的视图中循环它:
控制器:
public function index()
{
$projects = Project::all()->take(4);
return view('index' , compact('projects'));
}
字符串
索引视图
@foreach($projects as $project)
{{$storagePath = Storage::disk('local')->getDriver()->getAdapter()->getPathPrefix()}}
<li><img src="{{$storagePath.$project->fetchMedia->first()->public_name}}" title=" {{$project->name}}"></li>
@endforeach
型
HTML输出是正确的路径:“/home/vagrant/project/storage/app/projects/Domaa6.jpg”
但它不显示图像。
我已经尝试过使用HTML::image助手,但也没有成功。
有没有办法让它像现在这样工作,或者我需要创建一个新的控制器来操纵我的图像?fetchMedia
是我的模型上返回Media的函数。
public function fetchMedia()
{
return $this->hasMany('App\Media');
}
型
6条答案
按热度按时间zzwlnbp81#
你尝试做的是不可能在存储目录,但可能只在公共目录,也暴露路径或URL到您的laravel存储目录创建一些漏洞和它的坏习惯
但是有一种方法可以解决这个问题:
首先,你需要一个Image包,当引用某个路由时动态生成镜像,我推荐**intervention/image**,它有很多方法可以让镜像管理变得轻而易举。
要实现此目标,请执行以下步骤:
1.安装干预镜像:
composer update
*字符串
型
'Image' => 'Intervention\Image\Facades\Image
'型
型
更多安装细节https://github.com/Intervention/image
安装intervention/image后,您可以执行以下操作:
Image::make($path=storage_path('stock-photos/image1.jpg'));
个2.设置处理镜像请求的路由
型
3.之后在视图中可以执行以下操作:
型
ylamdve62#
不幸的是,我不能对Digitlimit的帖子发表评论(因为我的声誉还不够高),但他们的回应对我有效,但有一个变化。我没有返回
Image::make($image)
,而是使用了response()
方法,因为这似乎为我生成了头内容。比如说字符串
希望能帮助其他有类似问题的人。
f4t66c6m3#
当显示图像时,你不需要引用文件路径。进入
img
标记的是您要显示的图像的URL。所以,在你的情况下,这将是字符串
但是.这也不起作用,因为你向
http
请求的资源应该是公共可访问的。(像css,js-scripts,images).话虽如此,您需要将图像存储在不同的位置,公共文件夹是最佳位置。例如,如果您将图像保存在public/images/projects
中,则在视图中将像这样引用它们型
6ss1mwsb4#
虽然我已经使用Laravel大约2年了,但我最近才开始用它处理图像上传(使用版本5.3.16)。图像处理故障排除导致我到这个堆栈溢出后.最初接受的答案几乎解决了我遇到的问题,下面是一些小的变化:
字符串
在这个特定的例子中,我想检索一本书的特定上传图像。对于给定的书,我已经创建了一个目录,它与书的ID相匹配,并将图像上传到那里。
要检索图像,我首先获取公共存储目录。这通常在config/app目录下的'filesystems.php'配置文件中定义。下面是我的例子(省略了这个答案不需要的额外内容):
型
路由信息的其余部分遵循与第一个接受的应答相同的模式。渲染图像也遵循接受的答案。
pokxtpni5#
storage_path()函数返回应用程序存储目录的完全限定路径。您还可以使用storage_path函数生成存储目录中给定文件的完全限定路径:
字符串
https://laravel.com/docs/8.x/helpers#method-storage-path
yqyhoc1h6#
1.从laravel根目录中删除public/storage中的storage文件夹
1.然后运行php artisan storage:link
1.在您的视图中,现在可以使用下面的代码image)}}">显示图像,您的链接应该是这样的: