Téléchargement du fichier mime-type de validation avec Laravel 4
Lorsque je transfère un bien formé fichier MP3, Laravel 4 me dit qu'il n'est pas audio/mp3
mais application/octet-stream
, ce qui rend cette validation échoue:
$validator = Validator::make(
array('trackfile' => Input::file('trackfile')),
array('trackfile' => 'required|mimes:mp3')
);
if($validator->fails())
return 'doesn\'t works because mime type is '.Input::file('trackfile')->getMimeType();
else
return 'it works!';
Pourquoi ne pas télécharger le fichier en tant que audio/mp3
fichier ?
(Je l'ai déjà ajouté 'files' => true
le formulaire de déclaration)
Peut-être un coup d'oeil dans vendor\symfony\http-foundation\Symfony\Component\HttpFoundation\File\File.php aide. Je crois que c'est là que getMimeType (la) vie.
Qu'est-ce que
pour lier le "trackfile' clés des règles de la " trackfile fichier d'entrée. que proposez-vous? même si je ne suis pas sûr que c'est le problème ici!
Supprimer cette première ligne à partir de règles d'installation
Je tiens à préciser d'une entrée pour le programme de validation, je ne peux pas supprimer cette ligne. D'ailleurs, si j'ai mis seulement
Qu'est-ce que
array('trackfile' => Input::file('trackfile'))
?pour lier le "trackfile' clés des règles de la " trackfile fichier d'entrée. que proposez-vous? même si je ne suis pas sûr que c'est le problème ici!
Supprimer cette première ligne à partir de règles d'installation
array('trackfile' => Input::file('trackfile')
.Je tiens à préciser d'une entrée pour le programme de validation, je ne peux pas supprimer cette ligne. D'ailleurs, si j'ai mis seulement
Input::file('trackfile')
il me dit qu'il attend un tableau et non un objet.
OriginalL'auteur ryancey | 2014-02-04
Vous devez vous connecter pour publier un commentaire.
Modifier
Intégré dans le programme de validation était encore en train d'examiner certains des mp3 comme application/octet-stream, si vous avez converti le fichier d'origine avec tel ou tel logiciel.
J'ai finalement utilisé le MimeReader classe par l'utilisateur Shane, qui fonctionne totalement. Je me demande encore aujourd'hui pourquoi est-il si difficile de détecter un droit de type mime.
J'ai mis en place comme un validateur dans Laravel:
MimeReader.phps
dansapp/libraries/MimeReader.php
(regarder l'extension)Prolonger la Laravel
Validator
(je l'ai mis dans monBaseController
constructeur)app/lang/[whatever]/validation.php
(dans mon cas, la clé estaudio
)audio
comme une règle ! Exemple:'file' => 'required|audio'
, oùfile
se réfère àInput::file('file')
Laravel envisageait
audio/mpeg
fichiers.mpga
et pas.mp3
. J'ai corrigé dansMimeTypeExtensionGuesser.php
(dans les librairies de Symfony), avecaudio/ogg
qui ont été considérés comme.oga
. Peut-être que l'audio type mime dépend de ce logiciel encodeur a été utilisé.Autre méthode est de contourner le programme de validation et de vérifier le type mime directement dans le contrôleur à l'aide d'
Input::file('upload')->getMimeType()
comme Sheikh Heera dit.MimeReader de domaine est en baisse. Tout autre lieu où peuvent être trouvés?
J'ai mis à jour le lien.
OriginalL'auteur ryancey
C'est probablement à cause de
mp3
du fichier de type mime estaudio/mpeg
ou peut être qu'il ne parvient pas à reconnaître lemime_content_type
et ditapplication/octet-stream
comme un générique/de secours type. Vous pouvez essayer cette règle (exemple donné ci-dessous) à la place (pas testé/assurez-vous), parce queaudio/mpeg
est le bon type mime pourmp3
selon rfc3003:Aussi, vous pouvez vérifier manuellement la
mime
type en utilisant quelque chose comme ceci:Mise à jour:
Spécialement, pour
mp3
fichiers, vous pouvez également utiliser une bibliothèque getID3 qui est similaire à Php extension PECL id3, si vous l'utilisez, vous serez également en mesure d'utiliserID3 tag
du fichier et peut obtenir des informations telles quetitle
,artist
,album
,year
,genre
etc.Si vous l'utilisez, vous devez télécharger manuellement à partir du lien donné (
getid3
) et le mettre dans un dossier à l'intérieurapp
, peut-êtreapp/libs/
et vient de mettre lagetid3
dossier à partir de l'extrait de la source dans lelibs
dossier puis dans votrecomposer.json
fichier ajouter une entrée à l'intérieur declassmap
deautoload
section comme:Puis exécutez
composer dump-autoload
de terminal/invite de commande et que vous êtes prêt à l'utiliser. Pour l'utiliser, il symply essayez ceci:La validité de l'
mp3
fichier et Vous obtiendrez un tableau comme ceci:Si vous avez déjà installé ou peut installer le
PECL
extension de l'aide (dans le terminal) commande suivante:Alors vous pouvez normalement utiliser
L'exemple ci-dessus va afficher quelque chose de similaire à:
Vérifier Manuel Php.
audio/mpeg
dans le validateur n'a pas fonctionné, j'ai eu à le faire dans le mime-type devineur fichier directement. Je vous remercie pour votre temps et le commentaire sur les tags ID3 si! Je vais sûrement le regarder.Heureux de savoir que, vous êtes les bienvenus 🙂
OriginalL'auteur The Alpha