Php 为什么不';我的图像是否显示在Laravel应用程序中?
我目前正在开发一个新的Laravel应用程序,并试图让用户能够将图像上传到本地服务器。在本应用程序中,我将图像称为“媒体”。首先,这是我的Php 为什么不';我的图像是否显示在Laravel应用程序中?,php,html,laravel,filepath,Php,Html,Laravel,Filepath,我目前正在开发一个新的Laravel应用程序,并试图让用户能够将图像上传到本地服务器。在本应用程序中,我将图像称为“媒体”。首先,这是我的媒体。创建允许用户上传图像的文件: <form method="POST" action="/media" class="form-signin" enctype="multipart/form-data"> {{ csrf_field() }} <h2 class="form-signin-heading">Add
媒体。创建允许用户上传图像的文件:
<form method="POST" action="/media" class="form-signin" enctype="multipart/form-data">
{{ csrf_field() }}
<h2 class="form-signin-heading">Add Media</h2>
<hr>
<h2>Game Selector</h2>
<select name="game_id">
@foreach ($games as $game)
<option name="game_id" value="{{ $game->id }}">{{ $game->opponent }} {{ $game->gdatetime }} {{ $game->season->year }}</option>
@endforeach
</select>
<label for="inputMedia" class="sr-only">Media Name</label>
<input type="text" name="file_name" class="form-control" placeholder="Media Name" required autofocus>
<label for="inputMedia" class="sr-only">Content/Caption</label>
<input type="text" name="content" class="form-control" placeholder="Caption/Content" required>
<label for="inputMedia" class="sr-only">File</label>
<input type="file" name="media_file" class="form-control" placeholder="File" required>
<button class="btn btn-lg btn-primary btn-block" type="submit">Submit</button>
</form>
这一切都很好。当我上传图像时,它会出现在我的存储/app/media
文件夹中,但当我尝试在我的媒体中检索图像时,index
视图中不会显示图像。这是我的媒体。索引:
@foreach ($medias as $media)
<div class="col-sm-12 col-lg-12">
<h1 class="media_content">
{{ $media->game->gdatetime->format('l F jS \\, Y') }} vs.
{{ $media->game->opponent }}
</h1>
<a href="#"><img src="{{asset('storage/app/media').'/'.$media->file_name.'.jpg'}}" alt="{{ $media->file_name }}" height="250" width="250"></a>
<p class="media_content">
{{ $media->content }}
</p>
</div>
@endforeach
@foreach($media作为$media)
{{$media->game->gdatetime->format('lfjs\\,Y')}}vs。
{{$media->游戏->对手}
{{$media->content}
@endforeach
为什么我的图像没有显示在媒体索引
视图上?我想这可能与文件路径有关,但我已经尝试了我能想到的每一种有意义的组合,但没有任何效果。您无法从web访问存储
文件夹<代码>存储/应用/媒体
将永远无法访问。如果您使用的是公共磁盘(它创建了从storage/app/public
到public/storage
)的符号链接),则将图像存储到storage/app/public/media
。现在可以从/public/storage/media
访问图像。所以你的图像来源是
src="{{ asset("storage/media/{$media->file_name}.jpg") }}"
如果不使用公共磁盘,请将其上载到rootpublic
文件夹下的任意位置,并相应地访问它
公共磁盘上的文档对于Laravel 5,在项目根目录上打开终端并运行:
php artisan storage:link
这将在存储/app和公共文件夹之间创建链接。Hmmm这仍然不起作用。如果我从finder打开公共/存储/媒体中的文件,我应该能够看到它吗?因为我没有。我想我不应该这样做,因为这个路径只代表到存储/app/public/media的符号链接,但我想知道这是否就是问题所在?如果符号链接有效,那么public/storage/media
路径会将您重定向到storage/app/public/media
。但最终文件需要在存储/app/public/media
中。如果您没有symlink,请运行php artisan storage:link
来创建它。我如何确认symlink工作正常?我知道我是通过在我的项目目录的终端中运行php-artisan-storage:link
创建的,但不确定为什么它不工作。从您的公共文件夹运行ls-la
。public/storage
文件夹应该链接到storage/app/public
。好吧,看起来是这样的,我运行该命令的最后一行是lrwxr-xr-x 1 me staff 57 May 23 20:15 storage->/Users/me/projects/specificproject/storage/app/public
php artisan storage:link