【Laravel 5.1】画像(JPEG, PNG)と共にPDFをバリデーションで通すには。

参考資料 3点


[参考資料1]
[Laravel公式ドキュメント:リンク先 apache] https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

【MIME type (小文字表記)】( Extensions )
====================
【application/pdf】( pdf )
【image/png】( png )
【image/bmp】( bmp )
【image/gif】( gif )
【image/jpeg】( jpeg jpg jpe )


[参考資料2]
[Laravel公式ドキュメント]

https://readouble.com/laravel/5.1/ja/validation.html

mimesルールの基本的な使用法

'photo' => 'mimes:jpeg,bmp,png'

拡張子だけを限定する必要があるとしても、 このルールはファイルのMIMEタイプに基づき、 ファイルの内容を読み、MIMEタイプを推測することでバリデーションを行います。 MIMEタイプと対応する拡張子の完全なリストは、http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.typesで確認できます。


[参考資料3]
[Stack Overflowより] https://stackoverflow.com/questions/58054874/image-and-pdf-file-upload-laravel

(修正前)
'carEvidence' => 'image|mimes:png,jpg,jpeg,doc,pdf,docx,zip|max:10000'
(修正後)
'carEvidence' =>  'required|mimes:jpeg,png,jpg,zip,pdf|max:2048',




修正方法案

選択肢(1)

'upload_image' => 'mimes:pdf,png,jpg'

=> OK

しかし

NotReadableException in Decoder.php line 59:
Unsupported image type. GD driver is only able to decode JPG, PNG, GIF or WebP files.


選択肢(2)

'upload_image' => 'mimes:application/pdf, image/png, image/jpg'

=> NG

upload imageにはapplication/pdf, image/png, image/jpgタイプのファイルを指定してください。


選択肢(3)

'upload_image' => 'application/pdf, image/png, image/jpg'

=> NG

BadMethodCallException in Validator.php line 2694:
Method [validateApplication/pdf,Image/png,Image/jpg] does not exist.