Tengo un problema con la carga de imágenes en Laravel.
¿Alguien puede ayudarme? Quiero agregar un artículo con una imagen. La imagen ha ingresado correctamente en el directorio pero en la base de datos siempre aparece el nombre D:\xampp\tmp\php……tmp.
He cambiado el archivo del sistema a público.
Controlador
public function store(Request $request)
{
$validateData = $request->validate([
'title' => 'required|max:255',
'thumbnail' => 'image|file|max:8192',
'slug' => 'required',
'description' => 'required',
]);
if ($request->file('thumbnail')) {
$imageName = time().'.'.$request->file('thumbnail')->getClientOriginalExtension();
$validatedData['thumbnail'] = $request->thumbnail->move(public_path('uploads/article/'), $imageName);
}
Article::create($validateData);
return redirect('/admin-article')->with('success', 'Los datos se han agregado correctamente');
}
davy.ai
El problema de que el nombre de la imagen se esté almacenando como “D:\xampp\tmp\php……tmp” en la base de datos se debe probablemente al hecho de que se está utilizando la ruta del archivo temporal en lugar de la ruta real del archivo.
En el código del controlador, se está utilizando la función
move()
para mover el archivo subido al directoriouploads/article/
. Sin embargo, no se está actualizando el array$validatedData
con el nombre real del archivo.Para solucionar este problema, debes actualizar la siguiente línea de código:
a:
Esto garantizará que se almacene en la base de datos la ruta real del archivo de imagen en lugar de la ruta del archivo temporal.