我正在寻找一种方法来查看存储中私人文件夹中包含的图像:这里是资产存储/app/private/images/nomefile.jpg 我的问题是我只想通过资产刀片查看图像并且不通过 URL 的完整路径查看它们,这是因为我希望它们不公开,而只能在身份验证后在应用程序中查看,因此通过 asset() 有一种方法。我已经尝试了所有这些,但我不能,这是代码:
控制器:
$request->validate([
'image' => 'required|image|mimes:jpg,jpeg,png|max:8000'
]);
$imageName = time() . '.' . $request->image->getClientOriginalExtension();
$request->image->store('images', 'private');
$imageName = $request->file('image')->hashName();
$safeImageName = htmlspecialchars($imageName, ENT_QUOTES, 'UTF-8');
DB::table('aree')->where('id_area', $id)->update(['photo' => $safeImageName]
刀片:
<img src="{{ asset('storage/images/' . $item->photo) }}" alt="Shape2503" />
web.php 用于块 url
Route::get('/storage/images/{path}', [ImageController::class, 'show'])->name('image.show');
块 url 控制器
public function show($path)
{
$path = storage_path('storage/images/'. $path);
return abort(401);
}
请帮助我
您应该首先将时间定义为变量,或者使用 uuid 甚至 uniqueID。 所以你的代码应该是这样的:
$request->validate([
'image' => 'required|image|mimes:jpg,jpeg,png|max:8000']);
$image_id = uniqid(); //or something else
$imageName = $image_id . '.' . $request->image->getClientOriginalExtension();
$request->image->store('images', 'private');
$imageName = $request->file('image')->hashName();
$safeImageName = htmlspecialchars($imageName, ENT_QUOTES, 'UTF-8');
DB::table('aree')->where('id_area', $id)->update(['photo' => $safeImageName]);