目前,我已根据当前登录用户的身份设置显示图像的路径。用户可以看到他们上传的图像,因为它针对的是登录ID的用户。
Route::get('/imgupload/{filename}', 'imguploadController@view');
public function view($filename, User $user) {
$user = $user->where('id', auth()->id())->first();
$path = public_path() . '/app/images/'. $user->id .'/' . $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;
}
但是,我希望以管理员用户身份查看基于特定用户的所有图像。我知道问题在于它正在查看我的管理员帐户用户ID并将其放入路径中,显然没有。
我是否需要创建新函数或者是否可以动态地将新路径传递给此函数?
答案 0 :(得分:0)
以管理员身份访问时,您必须提供图片所有者id
,然后执行以下操作:
Route::get('/imgupload/{filename}', 'imguploadController@view');
public function view(Request $request, $filename, User $user) {
$user = $user->where('id', auth()->id())->first();
// Admin has to provide image owner's ID in request URL
// like this "...imgupload/imageName?id=1234"
if($user->isAdmin && $request->has("owner_id"))
$path = public_path() . '/app/images/'. $request->owner_id .'/' . $filename;
else
$path = public_path() . '/app/images/'. $user->id .'/' . $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;
}
如果您无法获得所有者id
,则必须搜索该图片的所有用户文件夹。