检索存储在存储文件夹中的图像
Retrieving image stored in storage folder
使用 laravel 5.3,我正在尝试检索视图中的图像。我怎么能这样做?
文件夹结构:storage/app/avatard
代码如下:
public function storeAvatar(Request $request, $username)
{
$user = User::where('name', $username)->first();
$avatar = $request->file('avatar')->store('avatars');
$avatar = explode('avatars/', $avatar);
$user->user_setting()->updateOrCreate(
['user_id' => $user->id],
['avatar' => $avatar[1]]
);
return back();
}
图片路径是这样保存在数据库中的:
/users/avatar/default.png
有点像这样你可以实现,因为存储路径对于 public 是直接不可用的。您需要在这样的路线中提供 public url。
可见
<img src="{{route('avatar',$filename)}}" />
或
<img src="/avatars/{{$filename}}" />
在routes/web.php
Route::get('/avatars/{filename}', function ($filename)
{
$path = storage_path() . '/avatars/' . $filename;
if(!File::exists($path)) abort(404);
$file = File::get($path);
$type = File::mimeType($path);
$response = Response::make($file, 200);
$response->header("Content-Type", $type);
return $response;
})->name('avatar');
如果您按照 Laravel documentation 将文件存储在 storage/app/public
目录中,您可以在 Unix/Linux 系统上创建一个符号 link,这将允许您引用文件就像在 public
目录中一样。
使用 artisan 命令创建符号 link:
php artisan storage:link
在您的视图中,您可以使用
引用这些文件
{{ asset('storage/path/to/file.png') }}
首先通过输入
创建一个存储空间link
php artisan storage:link
然后
<img src={{ asset('storage/folder_name/image_name') }} />
考虑一下,如果您使用的是 Homestead,则必须从虚拟机创建符号 link;
在您的终端中:
homestead ssh
转到您的项目文件夹:
cd Code/YOUR_PROJECT
现在可以执行命令了:
php artisan storage:link
使用 laravel 5.3,我正在尝试检索视图中的图像。我怎么能这样做? 文件夹结构:storage/app/avatard
代码如下:
public function storeAvatar(Request $request, $username)
{
$user = User::where('name', $username)->first();
$avatar = $request->file('avatar')->store('avatars');
$avatar = explode('avatars/', $avatar);
$user->user_setting()->updateOrCreate(
['user_id' => $user->id],
['avatar' => $avatar[1]]
);
return back();
}
图片路径是这样保存在数据库中的:
/users/avatar/default.png
有点像这样你可以实现,因为存储路径对于 public 是直接不可用的。您需要在这样的路线中提供 public url。
可见
<img src="{{route('avatar',$filename)}}" />
或
<img src="/avatars/{{$filename}}" />
在routes/web.php
Route::get('/avatars/{filename}', function ($filename)
{
$path = storage_path() . '/avatars/' . $filename;
if(!File::exists($path)) abort(404);
$file = File::get($path);
$type = File::mimeType($path);
$response = Response::make($file, 200);
$response->header("Content-Type", $type);
return $response;
})->name('avatar');
如果您按照 Laravel documentation 将文件存储在 storage/app/public
目录中,您可以在 Unix/Linux 系统上创建一个符号 link,这将允许您引用文件就像在 public
目录中一样。
使用 artisan 命令创建符号 link:
php artisan storage:link
在您的视图中,您可以使用
引用这些文件{{ asset('storage/path/to/file.png') }}
首先通过输入
创建一个存储空间linkphp artisan storage:link
然后
<img src={{ asset('storage/folder_name/image_name') }} />
考虑一下,如果您使用的是 Homestead,则必须从虚拟机创建符号 link;
在您的终端中:
homestead ssh
转到您的项目文件夹:
cd Code/YOUR_PROJECT
现在可以执行命令了:
php artisan storage:link