簡體   English   中英

Laravel 4中的mime類型驗證不起作用

[英]mime type validation in laravel 4 doesn't work

我正在嘗試驗證laravel中上傳文件(mp3文件)的文件大小和MIME類型。 但是,當我上傳圖片(gif,png)時,驗證似乎才開始。 當我上傳大小為100Mb的mkv文件時,驗證似乎可以。 這是我當前的代碼:

$file = Input::file('audio_file');
$file_rules = array('audio_file' => 'size:5242880|mimes:mp3'); //also tried mpeg

$file_validator = Validator::make(Input::file(), $file_rules);

if($file_validator->fails()){
 //return validation errors
}else{
 //always goes here and succeeds
}

任何想法我的代碼有什么問題嗎? 提前致謝!

嘗試將文件規則行更改為:

$file_rules = array('audio_file' => 'size:5242880|mimes:audio/mpeg,audio/mp3,audio/mpeg3');

根據 “音頻/ MPEG”是正確的MIME類型為MP3文件(有些瀏覽器也使用“音頻/ MPEG3”或“音頻/ MP3”)。

如果這樣不起作用,則可以在驗證之前獲取MIME類型:

$file = Input::file('audio_file');
$mimeType = $file->getMimeType();
$supportedTypes = ['audio/mpeg', 'audio/mpeg3', 'audio/mp3'];

if (in_array($mimeType, $supportedTypes)) {
    // validate or simply check the file size here
} else {
    // do some other stuff
}

選定的答案不起作用: $file->getMimeType()返回不可預測的結果。 諸如.css.js.po.xls以及更多其他類型的text/plain都將獲得text/plain mime類型。 所以我將解決方案發布到了這里https://stackoverflow.com/a/26299430/1331510

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM