Я пытаюсь подтвердить загрузку файла. Это может быть файл разных типов, включая файл vnd.android.package-archive (apk). В списке типов мимов по этой ссылке https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types на которые ссылаются документы по Laravel. Однако, если я проверю .apk
подайте в нем ошибки и не признает его действительным MIME.
Здесь rules
массив моего файла запроса
return [
'file' => [
'max:' . config('medialibrary.max_digital_asset_file_size'),
'mimes:' . config('medialibrary.digital_media_file_mime_types')
]
];
Я устанавливаю типы пантомимы глобально в файле конфигурации медиальной библиотеки, как это
'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 и т. Д. ОК
Любые подсказки были бы полезны.
ОК, я понял это. когда я положил 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, который проверяет пантомимы. в vendor/laravel/framework/src/illuminate/Validation/Concerns/ValidatesAttributes.php
класс, есть validateMimes
метод. Я поставил еще один регистратор внизу этого перед возвратом, чтобы посмотреть, каково было «угаданное» расширение для файла, и оно получилось как jar
который, когда я посмотрел это, является application/java-archive
тип файла. Таким образом, Laravel в основном угадывает, какие типы файлов, и ошибается для файлов .apk. Поэтому я добавил в jar
в мой список приемлемых пантомим, и это работает нормально. Возможно, не блестяще, но преодолевает это препятствие.
Других решений пока нет …