【问题标题】:PHP / Laravel - Validating filetype from incoming mailPHP / Laravel - 验证来自传入邮件的文件类型
【发布时间】:2019-03-19 07:28:20
【问题描述】:

我目前正在尝试在我的应用程序中验证收到的电子邮件并将电子邮件附件保存到我的数据库中。不过,我想控制哪些附件类型是允许的。

我在 PHP 中使用 Mail-Mime-Parser

这是我的代码:

$attachments = collect($email->attachments())->map(function ($attachment) {
    return [
      'file' => $attachment-> getContentType()
    ];
})->validate(['file' => 'mimes:jpeg,jpg,bmp,png,gif,pdf']);

上面返回false,即使传入的附件确实是pdf file。这是我尝试过的方法:

$attachment->getContentType(),返回:

Collection {#521
  #items: array:1 [
    0 => array:1 [
      "file" => "application/pdf"
    ]
  ]
}

我也尝试将PDF文件的实际内容返回给file,但验证仍然失败。

我也尝试过:

[...]->validate(['file' => 'mimetypes:application/pdf']); 

但它仍然返回 false。

我做错了什么?如何即时成功验证附件 mime 文件类型?

供参考: 这是附件的实际标题内容,当我dd($email->attachments())

  -headers: array:5 [
    0 => array:2 [
      0 => "Content-Type"
      1 => "application/pdf; name="Eksamenscase___BIGfinal.pdf""
    ]
    1 => array:2 [
      0 => "Content-Description"
      1 => "Eksamenscase___BIGfinal.pdf"
    ]
    2 => array:2 [
      0 => "Content-Disposition"
      1 => """
        attachment; filename="Eksamenscase___BIGfinal.pdf";\r\n
        \tsize=522462; creation-date="Sun, 03 Mar 2019 14:47:23 GMT";\r\n
        \tmodification-date="Sun, 03 Mar 2019 14:47:23 GMT"
        """
    ]
    3 => array:2 [
      0 => "Content-ID"
      1 => "<BEC725B483FD8944A5837620C72EF376@EURP193.PROD.OUTLOOK.COM>"
    ]
    4 => array:2 [
      0 => "Content-Transfer-Encoding"
      1 => "base64"
    ]
  ]

【问题讨论】:

  • 你在调用哪个validate函数?因为 Laravel Collection 上没有。
  • 对不起。我正在使用 Spaties 宏:github.com/spatie/laravel-collection-macros#validate
  • 你认为底层 Laravel 验证器有可能猜测其他类似的 mime 类型而不是 application/pdf 吗?

标签: php laravel


【解决方案1】:

我最终只检查了文件扩展名。

if (in_array($this->getFileExtension($attachment), ['jpeg', 'jpg', 'bmp', 'png', 'gif', 'pdf'])) {
     //Save the document. Valid filetype.
}

【讨论】:

    猜你喜欢
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 2016-08-05
    相关资源
    最近更新 更多