Как хранить изображения в 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);
Другие вопросы по тегам