Как хранить изображения в Laravel 10?
Я пытаюсь создать функцию, которая хранит имя, слаг, описание, изображение и метаданные с помощью Laravel для моего проекта.
Вот функция хранения в моем файле CategoryController.php.
public function store(CategoryFormRequest $request)
{
$validatedData = $request->validated();
$category = new Category([
'name' => $validatedData['name'],
'description' => $validatedData['description'],
'meta_title' => $validatedData['meta_title'],
'meta_keyword' => $validatedData['meta_keyword'],
'meta_description' => $validatedData['meta_description'],
]);
$category->slug = SlugService::createSlug(Category::class,
'slug', $validatedData['name']);
if ($request->hasFile('image')) {
$file = $request->file('image');
$extension = $file->getClientOriginalExtension();
$filename = time().'.'.$extension;
$path = $file->storeAs('uploads/category', $filename);
$category->image = $path;
}
$category->status = $request->status == true ? '1' : '0';
$category->save();
return redirect('admin/category/')
->with('message', 'Successfully added a category!');
}
Все, что связано с текстом, сохраняется и сохраняется успешно, кроме сохранения изображения по указанному пути, хотя в базе данных говорится, что сохраняется файл. Например, если изображение сохраняется в столбце изображений, путь указывается как «uploads/category/1676976218.png». Что касается самого пути, я сохранил его в общей папке.
1 ответ
Сначала запустите следующую команду
php artisan storage:link
Затем попробуйте загрузить файл еще раз. Ваш путь к изображению будет.
storage/app/uploads/category/1676976218.png
ЕслиstoreAs
не работает, просто используйте следующий код
$imageName = time().'.'.$request->image->extension();
$request->image->move(public_path('images'), $imageName);