Problème upload Video flv avi ?

Mammouth du PHP | 804 Messages

30 sept. 2010, 11:16

Bonjour tout le monde ca faisais un moment :p ,

Depuis peu j'ai un souci avec un script qui fonctionne très bien avec le PDF doc etc.
donc aucun problème de max size ou time out, le problème est simplement que mon script refuse de upload les fichiers vidéos de type flv ou avi, pourquoi ce problème insensé

je vous remercie d'avance pour un coup de pouce ;)
<?php

if(isset($_FILES['video']))
{
  // params
  unset($erreur);
  $extensions_ok = array('avi' , 'flv' ,'wmv' , 'mov', 'AVI' , 'FLV' ,'WMV' , 'MOV');
  $taille_max = 8000000;
  $dest_dossier = "./fichiers/files/";
 
  // vérifications
  if( !in_array( substr(strrchr($_FILES['video']['name'], '.'), 1), $extensions_ok ) ){
    $erreur = 'Veuillez sélectionner un fichier de type avi, flv, wmv ou mov !';  
  }elseif( file_exists($_FILES['video']['tmp_name']) and filesize($_FILES['video']['tmp_name']) > $taille_max){
    $erreur = 'Votre fichier doit faire moins de 8MO !';
  }
  
  // copie du fichier
  if(!isset($erreur))
  {
    $dest_fichier = basename($_FILES['video']['name']);
    // formatage nom fichier
    // enlever les accents
    $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    // remplacer les caracteres autres que lettres, chiffres et point par _
    $dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
    // copie du fichier
    move_uploaded_file($_FILES['video']['tmp_name'], $dest_dossier . $dest_fichier);
	
  }
  
}

?>
<!-- Erreur ? -->
<?php 
if(isset($erreur[php]
)){
echo '<p>', $erreur ,'</p>';
}
?>
[/php]
<form method="POST" action="<?php $_SERVER['PHP_SELF']?>" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="8000000" /> 
<fieldset>
<legend>Envoi de fichiers</legend>
<label for="fichier">Fichier :</label>
<input type="file" name="video" />
<input type="submit" name="envoi" value="Envoyer" />
</legend>
</fieldset>
</form>

Eléphant du PHP | 217 Messages

30 sept. 2010, 15:42

Il faut que le serveur soit configuré pour recevoir un fichier de la taille spécifiée. Par défaut la configuration de php autorise des fichiers de maximum 2Mo.

Le tableau $_FILES doit contenir une erreur comme quoi le fichier est trop volumineux.

Il faut donc modifier le php.ini pour permettre l'envoi de gros fichiers :
- upload_max_filesize (par défaut c'est 2M)
- post_max_size (par défaut c'est 8M)