#image #laravel-5.8
#изображение #laravel-5.8
Вопрос:
Я успешно сохранил изображение, которое загружается от пользователя, в поле с именем «изображение» в моей таблице «реклама». Но у меня возникла проблема с отображением изображения в моем представлении (blade.php ) файл.
Я пытался искать решения в Интернете, но ни одно из них не сработало для меня…
Ниже приведен метод сохранения для моего AdvertisementsController:-
public function store(Request $request)
{
// $media = Media::all();
request()->validate([
'image' => 'required',
'image' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
]);
//find current admin's id
$admin_user = auth()->id();
if ($request->hasFile('image')) {
$image = $request->file('image');
$image_name = str_slug($request->title).'.'.$image->getClientOriginalExtension();
$folderPath = public_path('/uploads/images');
$imagePath = $folderPath. "/". $image_name;
$image->move($folderPath, $image_name);
}
$title = request('title');
$description = request('description');
$sort_num = request('sort_num');
$media = Media::create([
'title' => $title,
'description' => $description,
'sort' => $sort_num,
'created_by' => $admin_user,
]);
Advertisement::create([
'image' => $imagePath,
'expired_at' => Carbon::now()->format('Y-m-d H:i:s'),
'media_id' => $media->id,
]);
// return back()->with('success', 'Your advertisement has been successfully created!');
return redirect('/advertisements');
}
Я могу успешно сохранить путь, но сохраненный путь довольно длинный, например: «/Users/hannzern/Desktop/numericledger-backend/public/uploads/images/klang-river.jpeg » и думал, что путь будет сохранен как » /public/uploads/images/klang-river.jpeg «. Может ли это быть проблемой?
Ниже приведен код для моего представления (blade.php ):-
<h1>Advertisements</h1>
<ul>
@foreach ($advertisements as $advertisement)
<a href="/advertisements/{{$advertisement->id}}">
{{ $advertisement->media->title }}
</a>
<br>
//Three methods of retrieving the image from the path but all three not working
<img src="{{ $advertisement->image }}" height="300" width="200">
<img src="/Users/hannzern/Desktop/numericledger-backend/public/uploads/images/klang-river.jpeg" height="300" width="200">
<img src="/public/uploads/images/klang-river.jpeg" height="300" width="200">
<br>
<br>
<br>
<br>
@endforeach
</ul>
<a href="/advertisements/create">Add new advertisement</a>
Кроме того, из файловых каталогов я вижу «klang-river.jpeg » изображение в папке my /public/uploads/images… У кого-нибудь есть идеи, почему? : (
Ответ №1:
/public
будет разрешен с помощью /
ссылок в браузере, поэтому ваша ссылка должна быть сохранена в базе данных как:
/Users/hannzern/Desktop/numericledger-backend/uploads/images/klang-river.jpeg
Однако, чтобы убедиться, что это работает везде, где вы размещаете свое приложение, вы не должны сохранять абсолютный путь. Сохраните только следующее в базе данных:
klang-river.jpeg
Затем, используя помощник asset (), вы можете вызвать правильный URL-адрес в своем шаблоне:
<img src="{{ asset('uploads/images/' . $advertisement->image) }}" height="300" width="200">
Это приведет к ожидаемому URL-адресу. Надеюсь, это поможет.