Laravel 5.5验证mimes:apk不起作用

问题描述 投票:0回答:1

我正在尝试验证文件上传。它可以是许多类型的文件,包括vnd.android.package-archive(apk)文件。它位于laravel文档引用的链接https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types上的mimes类型列表中。但是,如果我测试一个.apk文件,它会出错并且不会将其识别为有效的mime。

这是我的请求文件中的rules数组

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

我像这样在medialibrary配置文件中全局设置mime类型

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

我也尝试过这样的

'digital_media_file_mime_types' => 'doc,docx,xls,csv,txt,pdf,zip,jpeg,jpg,png,ppt,mov,mpeg,mp4,vnd.android.package-archive',

我可以上传pdf和csv和.zip等等

任何线索都会很方便。

php android validation laravel-5 apk
1个回答
0
投票

好的,我想出来了。当我把logger(request()->all())放在请求规则数组的顶部时,file就像这样出来了

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

但是,我设法在Laravel框架中追踪验证mimes的方法。在vendor/laravel/framework/src/illuminate/Validation/Concerns/ValidatesAttributes.php类中,有一种validateMimes方法。我在返回之前在其底部放置了另一个记录器,以查看该文件的“猜测”扩展名是什么,它出现为jar,当我查看它时,是一个application/java-archive文件类型。所以Laravel基本上猜测文件类型是什么,并且对.apk文件有误。所以我在jar中添加了我可接受的哑剧列表,它运行正常。也许并不出色,但让我通过了这个障碍。

© www.soinside.com 2019 - 2024. All rights reserved.