首页 > 解决方案 > Laravel:如何验证/限制特定文件类型的上传

问题描述

我目前有一个用于上传文件的 API,其名称具体为“Lesson IMG”,这意味着我只想上传图像文件类型,因为当我尝试上传另一种文件类型时,它也接受 pdf 文件类型。

课程创建控制器:

    public function create()
{
    //
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{

    $rules=[  
        'title'=>'required|unique:lesson',
        'module_id'=>'required',
        'content'=>'required',
        'created_by'=>'required',
    ];
    $validator = Validator::make($request->all(), $rules);
    if($validator->fails()){
        return response()->json($validator->errors(),400);
    }

    $data = $request->validate([
        'title'=>'required',
        'module_id'=>'required',
        'content'=>'required',
        'created_by'=>'required',
    ]);

    $lessons = Lesson::create($data);

    $uploaded_files = $request->file->store('public/uploads/');
    
    
    $lessons->lesson_pdf = $request->file->hashName();
    $results = $lessons->save();
    return response(['message'=>"Lesson successfully created", $lessons],200);
    
}

标签: laravellaravel-8

解决方案


如果您想要特定的图像类型,则使用 MIME 类型的规则,例如,

$rules = ['file' => 'required|mimes:jpeg,png,jpg,gif,svg'];

有关更多信息,请参阅此链接, https://laravel.com/docs/8.x/validation#basic-usage-of-mime-rule


推荐阅读