Estoy tratando de cargar una imagen en Laravel 8, después de cambiar la ruta del archivo a público en la carpeta de configuración y configurar el modelo correctamente. estoy recibiendo esta respuesta
Llamar a una extensión de función miembro () en nulo
Mi controlador de producto
public function store(Request $request) { $file = $request->file('image'); $name = Str::random(10); $url = Storage::putFileAs('images', $file, $name . '.' . $file->extension()); $product = Product::create([ 'title' => $request -> input('title'), 'description' => $request -> input('description'), 'image' => env('APP_URL') . '/' . $url, 'price' => $request -> input('price'), ]); return $product; }Mi modelo
protected $guarded = ['id'];Migración
public function up() { Schema::create('products', function (Blueprint $table) { $table->id(); $table->string('title'); $table->string('description')->nullable(); $table->string('image'); $table->decimal('price'); $table->timestamps(); }); }¿Qué he hecho mal o qué no estoy haciendo bien, por favor?
Verifique que tiene un archivo antes de crear el producto. O haga una validación adecuada de todos los campos requeridos.
public function store(Request $request) { if (!$request->has('image')) { return response()->json(['message' => 'Missing file'], 422); } $file = $request->file('image'); $name = Str::random(10); $url = Storage::putFileAs('images', $file, $name . '.' . $file->extension()); $product = Product::create([ 'title' => $request -> input('title'), 'description' => $request -> input('description'), 'image' => env('APP_URL') . '/' . $url, 'price' => $request -> input('price'), ]); return $product; }