我是 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>
Controller
public function getUserImage($filename)
{
$file = Storage::disk('public')->get($filename);
return new Response($file,200);
}
如何使用上面的代码显示图像?
最佳答案
我遇到了同样的问题。问题是,您无法按照建议访问存储中的内容 here你可以简单地从 public/storage
到 storage/app/public
创建一个 symbolic link
通过使用这个命令 php artisan storage:link
然后你可以像这样通过公共(public)目录访问存储目录中的任何内容 asset('storage/path_to_file')
,
当然,有时您不可能这样做(例如,当您将项目部署到共享主机时)。如果是这种情况,
您可以尝试将文件上传到公共(public)目录(每个人都可以访问)并使用 asset()
方法处理文件
1. 你可以简单地在存在于 config/filesystems.php
的磁盘阵列中定义一个新的磁盘驱动程序。在 laravel 5.4 中,默认定义了三个驱动('local'
, 'public'
, 's3'
)。你只需要添加你自己的驱动程序,我们在这里称之为 'MyDiskDriver'
(但你可以随意命名)。
config/filesystems.php
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET'),
'region' => env('AWS_REGION'),
'bucket' => env('AWS_BUCKET'),
],
'MyDiskDriver' => [
'driver' => 'local',
'root' => public_path('uploads'),
'url' => env('APP_URL').'/public',
'visibility' => 'public',
],
],
];
请注意,对于“MyDiskDriver”,“root”已设置为 public/uploads(这意味着当您使用 Illuminate\Http\UploadedFile 类的存储方法并将“MyDiskDriver”的名称作为第二个参数传递时,laravel会将文件上传到 public/uploads 目录。)
当您使用 Illuminate\Http\UploadedFile 类的 store 方法时,您可以将新创建的磁盘驱动程序的名称(此处为“MyDiskDriver”)作为第二个参数传递,以便 laravel 可以使用它来存储您尝试存储的文件位于您在“root”(此处为 public/uploads)中指定的目录中。
您可以使用
asset()
方法访问上传的文件。
编辑
除了执行第 2 步,您还可以将 .env
中的 FILESYSTEM_DRIVER
环境变量的值更改为您刚刚创建的磁盘驱动程序的名称,在我们的案例 MyDiskDriver
。
通过这种方式,您无需更改代码即可轻松更改磁盘驱动程序,只需更改 FILESYSTEM_DRIVER
环境变量的值
关于php - 显示存储 laravel 5.3 中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41984496/