我是新的laravel框架,我想显示存储在存储文件夹中的图像。我试过这个
路线
Route::get('/userimage/{filename}', [
'uses' =>'PostController@getUserImage',
'as' => 'account.image',
]);
blade文件获取url并显示图像
</section>
@if (Storage::disk('public')->has($user->first_name . '-' . $user->id . '.jpg'))
<section class="row new-post">
<div class="col-md-6 col-md-offset-3">
<img src="{{ route('account.image', ['filename' => $user->first_name . '-' . $user->id . '.jpg']) }}" alt="" class="img-responsive">
</div>
</section>
控制器
public function getUserImage($filename)
{
$file = Storage::disk('public')->get($filename);
return new Response($file,200);
}
如何使用上面的代码显示图像?
4条答案
按热度按时间7kqas0il1#
我也遇到了同样的问题。问题是,你不能访问存储中的东西,所以这里建议你可以简单地使用这个命令
php artisan storage:link
从public/storage
到storage/app/public
创建一个symbolic link
,然后你可以通过公共目录访问存储目录中的任何东西,比如这个asset('storage/path_to_file')
,当然有时候你不可能这样做(例如,当您将项目部署到共享主机时)。如果是这种情况,你可以尝试上传文件到公共目录(每个人都可以访问),并使用asset()
方法1对文件进行寻址。你可以简单地定义一个新的磁盘驱动程序在磁盘阵列中存在于config/filesystems.php
.在laravel 5.4中,三个驱动程序已经被默认定义('local'
,'public'
,'s3'
).你只需要添加你自己的驱动程序,在这里我们称之为'MyDiskDriver'
(但你可以叫它任何你想要的).config/filesystems.php
注意,对于'MyDiskDriver','root'已被设置为public/uploads(这意味着当您使用Illuminate\Http\UploadedFile类的store方法并将'MyDiskDriver'的名称作为第二个参数传递时,laravel将在public/uploads目录中上传文件。
1.当你使用Illuminate\Http\UploadedFile类的store方法时,你可以传递新创建的磁盘驱动程序的名称(这里是'MyDiskDriver')作为第二个参数,这样laravel就可以使用它来存储你试图存储的文件,在'root'中指定的目录(这里是public/uploads)。
1.您可以使用
asset()
方法访问上传的文件。编辑
不需要执行步骤2,您可以将
.env
中的FILESYSTEM_DRIVER
环境变量的值更改为您刚刚创建的磁盘驱动程序的名称,在我们的示例中为MyDiskDriver
。这样,您可以轻松更改磁盘驱动程序,而无需更改代码,只需更改FILESYSTEM_DRIVER
环境变量的值r3i60tvu2#
你的控制器应该处理所有的“幕后”过程,而你的视图只显示html和php变量,这是MVC模式的要点。
所以你的控制器应该返回一个视图,并在它的视图中注入文件路径。
现在,您的视图将能够访问变量
$myFile
:我假设了
public/img/
中图像的文件路径,所以可以随意更改这部分代码。此外,无论变量是否包含后缀.jpg
,您都应该添加它。kpbpu0083#
Laravel 5 - How to access image uploaded in storage within View?
检查第一个答案,您可以将所有
File
替换为Storage
。下面是我做的一个函数:
它需要介入图像包。
4dc9hkyq4#
为什么图像存储在Laravel站点的cetos服务器上,但不显示,而是显示这个地址http://localhost:8000/storage/images/1672938425.jpg?
我想把照片给你看
同时,我使用以下代码在services文件夹中的共享文件夹中配置镜像:使用Illuminate\Support\Facades\Storage;
class ShareService { public static function uploadImage($file,$folder){ $name = time(). '.' . $file-〉getClientOriginalExtension();存储::disk('public')-〉putFileAs('images/' . $folder,$file,$name);