上传的视频获得随机名称,而不是获得我在laravel上定义的名称

问题描述

视频没有得到我定义的名称,而我的名字就是创建文件夹而不是视频名称。并且此文件夹使用随机名称获取视频。

控制器代码

 public function uploadVideo(Request $request){ 
      $this->validate($request,[
        'video' => 'required|mimes:mpeg,ogg,mp4,webm,3gp,mov,flv,avi,wmv,ts',]);
    $video_upload = $request->file('video');
    $update = Page::findOrfail(1);
    if(isset($video_upload))
    {

        $videoName  = 'video'.'.'.$video_upload->getClientOriginalExtension();

        if(!Storage::disk('public')->exists('page'))
        {
            Storage::disk('public')->makeDirectory('page');
        }
        
        Storage::disk('public')->put('page/'.$videoName,$video_upload);
    } else {
        $videoName = $update->video;
    }

    $update->video = $videoName;
    $update->save();
    Toastr::success('Video Successfully Updated :)','Success');
    return redirect()->back();
         
}

解决方法

您可以使用随机字符串作为视频名称:

 $videoName  = Str::random(10).'.'.$video_upload->getClientOriginalExtension();

,并使用 putFileAs 方法作为自定义文件名:

Storage::disk('public')->putFileAs('page',$video_upload,$videoName)