2017-12-20 25 views
0

파일 업로드의 유효성을 검사하려고합니다. vnd.android.package-archive (apk) 파일을 포함하여 많은 유형의 파일이 될 수 있습니다. 이 링크의 mimes 유형 목록에 laravel 문서를 참조하는 https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types이 있습니다. 그러나 .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 타입 globaly 설정 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 목록에 추가했는데 정상적으로 작동합니다. 아마도 훌륭하지는 않지만이 장애물을 통과하게 만듭니다.