2017-12-20 14 views
0

ファイルのアップロードを検証しようとしています。これは、vnd.android.package-archive(apk)ファイルを含む多くの種類のファイルにすることができます。このリンクのmimesの種類のリストにあります。https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types laravelドキュメントを参照しています。しかし、私が.apkファイルをテストすると、エラーが発生し、有効なMIMEとして認識されません。ここで Laravel 5.5検証mimes:apkが機能しません

は、私は、私もこの

'digital_media_file_mime_types' => 'doc,docx,xls,csv,txt,pdf,zip,jpeg,jpg,png,ppt,mov,mpeg,mp4,vnd.android.package-archive', 
のように試してみましたが、この

'digital_media_file_mime_types' => 'doc,docx,xls,csv,txt,pdf,zip,jpeg,jpg,png,ppt,mov,mpeg,mp4,apk', 

ようmedialibrary設定ファイルにMIMEタイプグローバルに設定rules配列私の要求ファイル

return [ 
    'file' => [ 
     'max:' . config('medialibrary.max_digital_asset_file_size'), 
     'mimes:' . config('medialibrary.digital_media_file_mime_types') 
    ] 
]; 

です

pdfとcsvと.zipなどをアップロードできます。OK

手がかりは手軽です。

答えて

0

これはわかりました。私は、要求規則配列の先頭にlogger(request()->all())を入れたときに、fileはしかし、私はパントマイムを検証Laravelフレームワークのメソッドを追跡するために管理し、この

'file' => 
    Illuminate\Http\UploadedFile::__set_state(array(
    'test' => false, 
    'originalName' => 'QuickDrive.apk', 
    'mimeType' => 'application/vnd.android.package-archive', 
    'size' => 95585970, 
    'error' => 0, 
    'hashName' => NULL, 
)), 

のように出てきました。 vendor/laravel/framework/src/illuminate/Validation/Concerns/ValidatesAttributes.phpクラスには、validateMimesメソッドがあります。私は戻りの前に別のロガーをファイルの「推測された」拡張子が何であるかを調べるために入れました。jarと出てきましたが、これを見たときのファイルタイプはapplication/java-archiveです。だから、Laravelは基本的にはファイルタイプが何であるかを推測しており、.apkファイルでは間違っています。だから、私はjarを私の受け入れ可能なmimesのリストに追加しました。おそらく華麗ではありませんが、私はこのハードルを通過します。

関連する問題