我有一个
$request
变量,其中有一个 $request->titulo
(帖子标题)和多个图像作为 $request->contenido
。
我正在保存帖子中的数据,但似乎该函数永远不会进入保存图像的循环,因为数据库中和应该加载图像的文件夹/public
中都没有信息。我正在使用 Laravel 11 和 Postman。
我尝试使用循环来保存发送的每张图像,但它既不保存图像也不保存路线。
public function manejarImagenes($file){
$nameFile = uniqid();
$extensionFile = '.' . $file->getClientOriginalExtension();
$file->storeAs('public/',$nameFile.$extensionFile);
$storageRoute = storage_path('app/public/'.$nameFile.$extensionFile);
$publicRoute = public_path('content/'.$nameFile.$extensionFile);
File::move($storageRoute,$publicRoute);
Storage::delete($storageRoute);
return $nameFile.$extensionFile;
}
public function Publicar(Request $request){
$request->validate([
'titulo' => 'required|string',
'contenido.*' => 'required|file|mimes:jpg,png,jpeg,gif,svg,webp',
]);
$user = auth()->user();
$publicacion = new publicacion();
$publicacion->idUsuario = $user->id;
$publicacion->titulo = $request->titulo;
$publicacion->save();
//$content = [];
if($request->hasfile('contenido')){
foreach($request->file('contenido') as $file){
$ruta = $this->manejarImagenes($file);
$contenido = new content();
$contenido->idPublicacion = $publicacion->id;
$contenido->dirContent = $ruta;
$contenido->save();
}
}else{
return response()->json(['status'=>'vale gorro']);
}
return response()->json(['success'=>true,'data'=>$publicacion]);
}
正如评论中提到的
Don't Panic
,是$request->hasFile
,而不是$request->hasfile
。
至于你的
manejarImagenes
功能:
不需要
uniqid()
,Laravel 会为你生成一个唯一的 id 作为文件名。
无需获取原始文件扩展名,因为 Laravel 将从 MIME 类型中获取该扩展名。
不要将文件直接保存到
/app/public
,使用子目录,例如downloads
。
所以该函数内部需要的所有内容基本上是:
return $file->store('downloads');