Я строю галерею с несколькими файлами.
Пока у меня две проблемы, но давайте сначала вставим мой код.
Контроллер:
public function store(Request $request)
{
$gallery = new GalleryImage();
if($request->hasFile('image')) {
$images = $request->file('image');
foreach($images as $image) {
$path = $image->getClientOriginalName();
$name = time() . '-' . $path;
$gallery->image = $image->move(public_path().'/uploads/temp/', $name);
//$gallery->image = $request->file('image')->storeAs('public/gallery-images', $name);
}
}
$gallery->gallery_id = $request->gallery_id;
$gallery->save();
return back()->with('success_message','Images has been uploaded!');
}
View blade:
<form action="{{ route('gallery-images.store') }}" method="POST" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="form-group">
<input type="hidden" name="gallery_id" value="{{ $gallery->id }}">
<input type="file" name="image[]" id="id_imageGallery" class="form-control" multiple="multiple" required>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Upload</button>
</div>
</form>
Моя первая проблема, когда у меня есть такой код и я загружаю три файла, он успешно сохраняет файлы в каталоге / uploads / temp, но в моей базе данных я вижу, что естьзагружено только одно изображение вместо трех.
Моя вторая проблема - когда я изменяю свой код и использую закомментированную часть (потому что я хочу сохранить эти три изображения в хранилище):
$gallery->image = $request->file('image')->storeAs('public/gallery-images', $name);
Я получаю эту ошибку:
Call to a member function storeAs() on array
Как я могу загрузить эти несколько изображений в папку Storage и записать их все в базу данных?
- EDIT - ярешил мою первую проблему!
Я просто поместил метод сохранения и другие детали в цикл.Я должен был подумать об этом раньше:)
Вот мой обновленный код:
public function store(Request $request)
{
if($request->hasFile('image')) {
$images = $request->file('image');
foreach($images as $image) {
$gallery = new GalleryImage();
$path = $image->getClientOriginalName();
$name = time() . '-' . $path;
$gallery->image = $image->move(public_path().'/uploads/temp/', $name);
//$gallery->image = $request->file('image')->storeAs('public/gallery-images', $name);
$gallery->gallery_id = $request->gallery_id;
$gallery->save();
}
}
return back()->with('success_message','Images has been uploaded!');
}
Теперь единственное, что нужно сделать, это как сохранить их в хранилище файлов вместо public_path иизбежать этой ошибки:
Call to a member function storeAs() on array