【问题标题】:Mime type validation not working in Laravel 5.7Mime 类型验证在 Laravel 5.7 中不起作用
【发布时间】:2020-03-07 08:59:36
【问题描述】:

我想验证一个 .pfx 文件,但它总是失败。

我尝试了以下代码:

  $validacoes =  [
        'certificado' => 'mimetypes:application/x-pkcs12'
    ];

但它不起作用。

如果我这样做

dd($request->file('certificado')->getMimeType())

我得到:application/x-pkcs12。

有什么问题?

对于图像,它确实有效:image/jpg、image/png 等。

【问题讨论】:

  • 如果您尝试使用文件扩展名会得到什么? mimes:pfx
  • 我几乎要放弃了。显然,它不适用于某些文件。
  • 你能用相同类型的不同文件进行测试吗?检查是否还有其他错误。

标签: laravel laravel-5.7


【解决方案1】:

根据the docs应该是这样的:

'certificado' => 'mimes:p12,pfx'

【讨论】:

  • 您能否分享您的文件以便我们进行测试?
  • 该文件是不属于我的数字证书,所以无法共享。
  • 也许您可以创建一个未在任何地方使用的空白新文件?测试一下,如果还是不行,分享给我们?否则我们无能为力。
【解决方案2】:

试试这个

$validacoes =  [
        'certificado' => 'mimes:application/x-pkcs12'
    ];

【讨论】:

    【解决方案3】:

    我也有同样的问题。

    我的文件:

    "certificateFile" => UploadedFile {#5824
        -test: false
        -originalName: "file.pfx"
        -mimeType: "application/x-pkcs12"
        -error: 0
        #hashName: null
    

    我的验证规则:

    public function rules()
        {
            return [
                'certificateFile' => 'required|mimetypes:application/x-pkcs12',
                'certificatePassword' => 'required'
            ];
        }
    

    各位有什么想法吗?

    编辑:好的,在另一个可能回答我们问题的问题 (Laravel 5 Mime validation) 中找到了答案。

    在此评论 (https://stackoverflow.com/a/30023227/2796516) 中解释了 Laravel 使用 guessExtension 来验证我们的文件。并检查我们发现的上述扩展的源代码:

    'application/x-pkcs12' => 'p12',
    

    这可能意味着它只接受扩展名为 p12 的证书文件,pfx 不起作用。

    【讨论】:

      猜你喜欢
      • 2017-06-23
      • 1970-01-01
      • 2016-08-16
      • 2016-08-05
      • 1970-01-01
      • 2015-01-09
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多