2010-10-19 4 views
0

Quel serait le meilleur moyen de valider un formulaire de téléchargement?La meilleure façon de valider un formulaire de téléchargement?

En utilisant le type mime pour le moment, mais cela ne fonctionne pas tout à fait - ne peut pas télécharger mpegs même si je recherche video dans le type mime.

Merci

Tom

+0

signifie que vous valider le type de fichier? – MatTheCat

+0

ouais, désolé - donc personne ne peut télécharger un script PHP et l'exécuter ou quelque chose de similaire. –

Répondre

1

Cela semble fonctionner:

switch (strtolower($_FILES["file"]["type"])){ 
     case "application/msword": 
     case "application/pdf": 
     case "application/vnd.ms-excel": 
     case "application/vnd.ms-powerpoint": 
     case "application/zip": 
     case "image/gif": 
     case "image/jpeg": 
     case "image/png": 
     case "image/tiff": 
     case "text/plain": 
     case "video/mpeg": 
     case "video/x-mpeg2": 
     case "video/msvideo": 
     case "video/quicktime": 
      // do it 
      break; 
     default: 
      // don't do it 
      break; 
    } 

Pour quelqu'un d'autre cela pourrait aider à jeter un oeil à http://www.sfsu.edu/training/mimetype.htm pour ajouter d'autres types de mime que vous pourriez avoir besoin de vérifier.

0

Je suppose que vous voulez vérifier si un fichier téléchargé est un fichier vidéo valide. Donc, une chose que vous pouvez vérifier est l'extension de fichier (IE ". MPG" pour la vidéo MPEG). Parce qu'aucun site Web connu pour moi n'a une validation vidéo interne, vous devez compter sur un programme/une bibliothèque externe pour vérifier si le fichier vidéo est vraiment un fichier vidéo. Peut-être FFMPEG est capable de le faire.

+0

Mais encore une fois en utilisant une bibliothèque aussi énorme que FFMPEG pour un petit script comme celui-ci est "malade". – jolt

0

Essayez quelque chose comme ceci:

$mime = strtolower($_FILES["file"]["type"]); 
$parts = explode("/",$mime); 

switch($parts[0]) 
{ 
    case 'video': 
     //Video file, use $parts[1] to check the video subtype 
    break; 
    case 'image': 
    break; 
} 
+0

c'est ce que j'avais à l'origine, mais ça ne semblait pas fonctionner, je ne sais pas pourquoi, je pense que c'était peut-être parce que je n'avais pas 'strtolower (...)':) # –

Questions connexes