我如何在 Laravel 中管理多部分/表单数据?

问题描述 投票:0回答:1

我有一个

$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]);
}
php laravel postman multipartform-data
1个回答
0
投票

正如评论中提到的

Don't Panic
,是
$request->hasFile
,而不是
$request->hasfile

至于你的

manejarImagenes
功能:

  1. 不需要

    uniqid()
    ,Laravel 会为你生成一个唯一的 id 作为文件名。

  2. 无需获取原始文件扩展名,因为 Laravel 将从 MIME 类型中获取该扩展名。

  3. 不要将文件直接保存到

    /app/public
    ,使用子目录,例如
    downloads

所以该函数内部需要的所有内容基本上是:

return $file->store('downloads');
© www.soinside.com 2019 - 2024. All rights reserved.