【问题标题】:Does Laravel validator check the MIME type of the file or the extension? [duplicate]Laravel 验证器是否检查文件或扩展名的 MIME 类型? [复制]
【发布时间】:2021-02-14 00:37:01
【问题描述】:

我的应用程序要求用户上传电子表格。然后将该电子表格数据转换为数据库。我正在构建一个中间件来防止任何用户错误或安全入侵。在查看 Laravel 文档后,我发现 Laravel 中的 Validator 会检查 MIME 类型。

public function handle(Request $request, Closure $next)
{
    $request->validate([
        'spreadsheet' => 'required|mimes:xlsx,xls'
    ]);
    
    return $next($request);
}

这会检查 MIME 类型或文件扩展名吗?对于 xlsx 或 xls 文件,MIME 类型为:

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
application/vnd.ms-excel

我应该检查哪些?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    试试这个

    $validator = Validator::make(
      [
      'file'      => $request->file,
      'extension' => strtolower($request->file->getClientOriginalExtension()),
      ],
      [
      'file'          => 'required',
      'extension'      => 'required|in:doc,csv,xlsx,xls,docx,ppt,odt,ods,odp',
      ]
    );
    

    【讨论】:

    • 但是这是检查扩展名还是 MIME 类型?没有什么能阻止某人将其命名为.xlsx.php 等...可以肯定的是,应该检查文件 MIME 类型,我觉得好像这是在检查扩展名
    • 是的,我认为它正在检查 MIME 类型。关于你提到的问题,我真的不知道,但如果你弄清楚了,也请写在这里
    猜你喜欢
    • 2011-11-13
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2011-04-07
    • 2018-11-26
    • 1970-01-01
    • 2016-08-05
    • 2015-06-13
    相关资源
    最近更新 更多