首页 > 解决方案 > Laravel 视频、音频和图片上传

问题描述

这是我的 PostsController 图片上传方法

public function store(Request $request, User $user, Image $image)
{
    $this->validate($request, [
        'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        'body' => 'required'
    ]);


    if( $request->hasFile('image') ) {
        $image = $request->file('image');
        $filename = time() . '.' . $image->getClientOriginalExtension();

        Image::make($image)->save( public_path('uploads/images/' . $filename ) );
    } 

    $image = $filename;

    auth()->user()->publish(
        new Post(['body' => request('body'), 'image' => $image, 'user_id' => auth()->id()])
    );

    return redirect('/');
}

我想要一种上传图像、视频和音频的方法,以及一个用户可以上传图像或视频或音频的输入 如何在一个控制器中完成所有这些事情?

标签: phplaravelupload

解决方案


如果您正在使用表单请求,请尝试使用以下代码

  public function rules() {
    $rules = [
        'some_field' => 'required',
    ];

    //  if fileType is audio
    if ($this->input('fileType') == 'audio') {
        $rules['file'] = 'mimes:mp3,mp4';
    }

    //if fileType is video
    if ($this->input('fileType') == 'video') {
         $rules['file'] = 'mimes:mp4,3gp';

    }
    return $rules;
}

字段名称和验证规则根据您的要求更改。


推荐阅读