如何在laravel的图像上传中添加uniqid

时间:2019-09-19 03:11:53

标签: laravel

我具有将数据插入表中的功能,并且该数据包括image / file。我认为我的表单没有问题,但是添加了这个uniqid()之后,就无法提交错误“调用成员函数getClientOriginalExtension()为null”的错误

 public function store_pelatihan(Request $request)
{

    $this->validate($request,[
        // 'title'       => 'required|min:5',
        // 'description' => 'required|min:5|max:14'
    ] );

    if($request->hasfile('file_scan'))

    {   
    $file = $request->file('file_scan');
        $name=$file->getClientOriginalName();
        $extension = $request->image->getClientOriginalExtension(); 
        $fileName = $file.'.'.uniqid().'.'.$extension; 
        $file->move(public_path().'/files/', $fileName);  
        $data = $fileName;  
    }


    $users = new Master_seminar_pelatihan;
    $users->user_id              = $request->user_id ;
    $users->nama_pelatihan       = $request->nama_pelatihan ;
    $users->nomor_pelatihan      = $request->nomor_pelatihan ;
    $users->tanggal              = $request->tanggal ;
    $users->uraian               = $request->uraian ;
    $users->tempat               = $request->tempat ;
    $users->file_scan            = $data;

    dd($data);
    // $users->save();
    // return redirect ('pelatihan')->with('success', 'Input Succes');


}

以前,我正在运行这段代码,并且运行时没有错误:

$extension = $request->image->getClientOriginalExtension(); 

$fileName = $file.'.'.uniqid().'.'.$extension; 

3 个答案:

答案 0 :(得分:0)

更改此行:

$request->image->getClientOriginalExtension()

至:

$file->getClientOriginalExtension()

答案 1 :(得分:0)

如果要与'串联。' uniqid()之前,将需要扩展名,因此您可以使用 -''_'

$fileName = $file.'_'.uniqid().'.'.$extension; 

$fileName = $file.'-'.uniqid().'.'.$extension;

答案 2 :(得分:0)

  • 首先检查文件isValid()
  • 获取{strong> $ file 中的getClientOriginalExtension()(不是 $ request-> image
  • 请勿将 $ file (它是UploadedFile)变量与字符串连接在一起。 $ name 应该改为
    if ($request->hasfile('file_scan') && $request->file('file_scan')->isValid()) {
        $file = $request->file_scan;
        $name = $file->getClientOriginalName();
        $extension = $file->getClientOriginalExtension();
        $fileName = $name . '.' . uniqid() . '.' . $extension;
        $file->move(public_path() . '/files/', $fileName);
        $data = $fileName;
    }