'array_key_exists(): The first argument should be either a string or an integer

Im trying to upload an image in my Laravel app. but have an error:

array_key_exists(): The first argument should be either a string or an integer

Im using the enctype: <form method="POST" action="/producto" enctype="multipart/form-data">

This is my controller:

public function CrearProducto(Request $data)
{
    $data->validate(
        [
            'nombre_producto'=>'required | min:1 | max:250',
            'precio_producto'=>'required | min:1 | max:250',
            'stock_producto'=>'required | min:1 | max:250',
            'igv_producto'=>'required | min:1 | max:250',
            'producto_categoria'=>'required | min:1 | max:250',
            'imagen_producto'=>'mimes:jpeg,bmp,png,jpg',
        ]

    );

    
        $producto = new Producto();
        $producto->nombre_producto = $data["nombre_producto"];
        $producto->precio_producto = $data["precio_producto"];
        $producto->stock_producto = $data["stock_producto"];
        $producto->igv_producto = $data["igv_producto"];
        $producto->producto_categoria = $data["producto_categoria"];
        if($data["imagen_producto"==""]){
            $producto->imagen_producto = $data["imagen_producto"];
        }else{
            $imagen = $data["imagen_producto"];
            $nombre_img_prod = time()."_".$imagen->getClientOriginalName();
            \Storage::disk('public')->put($nombre_img_prod,  \File::get($imagen));

            $producto->imagen_producto = $nombre_img_prod;
            
        }
        //$producto->imagen_producto = "-";
        $producto->tipo_afectacion_producto = "-";
        $producto->estado_producto = "Activo";
        $producto->save();

        return redirect()->route('producto');
    
}


Solution 1:[1]

Validation rules cannot have spaces. Try to simplify the method and use everything that the Laravel framework offers you.

Example:


    public function crearProducto(Request $request)
    {
        // Validation rules cannot have spaces.
        $request->validate([
                'nombre_producto'    => 'required|min:1|max:250',
                'precio_producto'    => 'required|min:1|max:250',
                'stock_producto'     => 'required|min:1|max:250',
                'igv_producto'       => 'required|min:1|max:250',
                'producto_categoria' => 'required|min:1|max:250',
                'imagen_producto'    => 'nullable|image',
            ]
        );

        $producto = new Producto;

        $producto->nombre_producto    = $request->nombre_producto;
        $producto->precio_producto    = $request->precio_producto;
        $producto->stock_producto     = $request->stock_producto;
        $producto->igv_producto       = $request->igv_producto;
        $producto->producto_categoria = $request->producto_categoria;

        if ($request->hasFile('imagen_producto')) {
            $producto->imagen_producto = $request
                ->file('imagen_producto')
                ->store('images', 'public');
        }
        
        //$producto->imagen_producto = "-";
        $producto->tipo_afectacion_producto = "-";
        $producto->estado_producto          = "Activo";
        $producto->save();

        return to_route('producto');
    }

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Mauricio Mendoza