laravel - 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);
}
解决方案
如果您想要特定的图像类型,则使用 MIME 类型的规则,例如,
$rules = ['file' => 'required|mimes:jpeg,png,jpg,gif,svg'];
有关更多信息,请参阅此链接, https://laravel.com/docs/8.x/validation#basic-usage-of-mime-rule
推荐阅读
- spring - 错误消息:org.hibernate.NonUniqueObjectException:具有相同标识符值的不同对象已与会话关联
- swift - 在 Credimax Mastercard Payment API 中创建订单和交易
- node.js - 在 express 服务的多个 react 客户端内路由
- sql - 在首选列值的同时选择唯一 ID
- php - 如何使用 Laravel 对页面进行密码保护?
- php - 此路由不支持 GET 方法 api.php
- azure - Azure 函数应用内部的 X509Certificate2 - 无法识别提供给包的凭据
- php - 如何使用 convert_tz 或任何其他函数优化数据库时区
- javascript - 如何将子组件的验证数据(作为 formik 表单)传递给其父组件并在父组件中处理表单提交
- python-3.x - Tesseract-OCR、Python、计算机视觉