首页 > 解决方案 > PHP Laravel:$request->hasFile() 不工作

问题描述

我有一个表格,我可以在其中获得标题、内容……和图像。当我 dd($requests->all()); 时,它返回以下正确的内容。

array:10 [▼
  "_token" => "HAf1f0m6kH54atYXUSb0UMpXcNdmA3IR46iTwt83"
  "title" => null
  "imagePost" => Illuminate\Http\UploadedFile {#259 ▼
    -test: false
    -originalName: "07_ducati_diavel_base.jpg"
    -mimeType: "image/jpeg"
    -error: 0
  }
]

这是我的图像处理代码:

public function create(Request $request)
    {
        // dd($request->all());
        $imagePost = 'IMAGE-POST'.time().$request->file('imagePost')->getClientOriginalName();
        
        if($request->hasFile('imagePost'))
        {
            // ec
            $filee = $request->image;
            $fileName = $filee->getClientOriginalName();
            $filee->move('uploads/posts',$fileName);
            $image = $fileName;
        }
        $status = $request->input('status');
        DB::table('post')->insert([
            'image'=> $image
        ]);
    }

但是 img DB 表字段为空。

if($request->hasFile('imagePost'))没有得到这个领域。

我做错了什么?

标签: phplaravelrequestlaravel-7

解决方案


您正在修改文件对象,然后再使用hasFile()条件检查它。首先检查是否$request有文件,然后根据您的使用修改它 ``

public function create(Request $request)
{
    // dd($request->all());        
    
    if($request->hasFile('imagePost'))
    {
        $imagePost = 'IMAGE-POST'.time().$request->file('imagePost')->getClientOriginalName();
        // ec
        $filee = $request->image;
        $fileName = $filee->getClientOriginalName();
        $filee->move('uploads/posts',$fileName);
        $image = $fileName;
    }
    $status = $request->input('status');
    DB::table('post')->insert([
        'image'=> $image
    ]);
}

推荐阅读