Valider une extention

asus02 Messages postés 215 Statut Membre -  
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
bon suite a mes differents soucis avec mon module d'upload j'en ai refait un autre qui fonctionne a merveil au niveau des images,
j'en est donc refait un pour uploader des videos mais je ne pense pas que mes autorisation d'ext soit bonnes

$valid_ext = array('avi','swf', 'mpeg4','mp4');

et pour la taille maxi accepter :

$taille_max = 3500000000; pour 35 mo

le soucis c'est qu il ne veut pas d'un fichier mp4.. pourquoi y a t il une erreur quelque part dans mes extentions valide ?

merci

22 réponses

Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
salut,

vu !
-;o)

est-ce que ça fonctionne avec les autres extensions ?

est-ce que tu convertis la casse de l'extension du fichier avant de tester ?
$ext = strtolower( $ext);

0
asus02 Messages postés 215 Statut Membre 13
 
oui avec un swf c'est ok pas avec un mp4

et pour : est-ce que tu convertis la casse de l'extension du fichier avant de tester ?

$ext = strtolower( $ext);

je voit pas de quoi tu parle (novice en php)
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
tu dois faire un test pour savoir si l'extension du fichier est dans le tableau des extensions autorisées.

et tu dois faire le test avec la fonction 'in_array()'.

et le manuel PHP dit :
bool in_array ( mixed $needle, array $haystack [, bool $strict] )

in_array() recherche needle dans haystack et retourne TRUE s'il s'y trouve, ou FALSE sinon. 

Le troisième paramètre strict est optionnel. S'il vaut TRUE alors in_array() vérifiera aussi que le type du paramètre needle correspond au type de la valeur trouvée dans haystack. 

Note: Si needle est une chaîne, la comparaison est faite en tenant compte de la casse. 

Note: Dans les versions antérieure à 4.2.0, needle ne pouvait pas être un tableau. 

donc si tu cherches 'MP4' dans le tableau tu ne le trouveras pas, si tu cherches 'mp4' tu le trouveras.

alors avant de tester, tu mets ton extension en minuscules ('strtolower()'), comme ça pas de problème de casse.

(si c'est le terme 'casse' qui t'tracasse (je vais aller me coucher, moi !) c'est le fait pour une lettre d'être majuscule ou minuscule)

voili, voila, mais ça ne réglera pas forcement ton problème.

faudra penser à nous mettre le code de test un d'ces quatre !
-;o)
0
asus02 Messages postés 215 Statut Membre 13
 
j'ai refait un test en ajoutant wmv et mpg car mp4 n'existe pas
le wmv ok /le avi ok /le swf ok /le mpg non

il n'y a que le mpg qui ne passe pas..

$valid_ext = array('avi','swf','mpg','wmv','mkv','mov','mpeg4');

le je ne comprend plus le mpg ne fait que 6.30 mo et ma limite est de 35mo donc vu que l'ext est valid pourquoi
il ne me la prend pas ??????

voir extentions http://www.commentcamarche.net/systemes/format.php3
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
tu as une gestion d'erreurs ?
le serveur ne te répond rien ?

montre nous le bout de code qui traite l'upload lui même (test extensions et poids).
0
asus02 Messages postés 215 Statut Membre 13
 
si le message d'erreur apres l'upload est "veuillez inserer un fichier de type mpg, avi, swf, wmv ne depassant pas 35mo"

$repedest = "video/";
$valid_ext = array('avi','swf','mpg','wmv','mkv','mov','mpeg4');
$taille_max = 35000000000;
if ((!in_array( substr(strrchr($fichier_name, '.'), 1), $valid_ext ) )  ||  filesize($fichier) > $taille_max) {
echo "<big>Veuillez s&eacute;lectionner un fichier de type mpg, avi, swf, mpeg4 de moins de 35mo !</big>";
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
et oui mais tu gères les deux erreurs avec la même condition.

j'utilise un test comme ça pour mes
upload
:
<?php
$extension = strtolower( strrchr( $_FILES['img']['name'], '.' ) );
$valid_ext = array( '.avi', '.swf', '.mpg', '.wmv', '.mkv', '.mov', '.mpeg4' );
try
{
	if( !in_array( $extension, array( '.avi','.swf','.mpg','.wmv','.mkv','.mov','.mpeg4' ) ) )
	{
		throw new Exception( 'Vous devez uploader un fichier de type '.implode( ', ', $valid_ext).'.' );
	}
	if( filesize( $_FILES['img']['tmp_name'] ) > IMAGE_MAX_SIZE )
	{
		throw new Exception( 'Le fichier est trop volumineux.');
	}
}
catch( Exception $e )
{
	echo( "<p>".$e->getMessage()."</p>\n" );
}
?>
0
asus02 Messages postés 215 Statut Membre 13
 
regarde je vient d uploader cette video mpg DJ Crazy Frog - Popcorn (ext mpg)

http://acr02.fr/membres/srv2/video/DJ Crazy Frog - Popcorn.mpg

voila le lien de restitution http://acr02.fr/membres/srv2/video/DJ

il ne prend pas en compte les espace et certain signe comme les . les espaces et les -

la video est bien sur le serveur mais le lien n'est pas bon
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
on progresse, on progresse !
-;o)

et bas y a qu'a lui donner de fichier correct !
avec PHP 5 on a des filtres !!!

appliques ça à ton nom de fichier de destination avant d'
uploader
.
$url = filter_var( $url, FILTER_SANITIZE_URL );
0
asus02 Messages postés 215 Statut Membre 13
 
a quel endroit

<html>
<body>
<center>
<?php
// Repertoire de stockage des images

$repedest = "video/";
$valid_ext = array('avi','swf','mpg','wmv','mkv','mov','mpeg4');
$taille_max = 35000000000;
if ((!in_array( substr(strrchr($fichier_name, '.'), 1), $valid_ext ) )  ||  filesize($fichier) > $taille_max) {
echo "<big>Veuillez s&eacute;lectionner un fichier de type mpg, avi, swf, mpeg4 de moins de 35mo !</big>";
} else {



if ( file_exists($repedest.$fichier_name) ) {
echo "<big>Le fichier ".$fichier_name." existe déjà !!</big>";
} else {
if ( !file_exists($fichier) ) {
echo "<big>Erreur d'upload...</big>";
} else { // ici on déplace le fichier ou on veut
if ( !@copy($fichier,$repedest.$fichier_name) ) {
echo "<big>Erreur, contactez l'administrateur...</big>";
} else {
echo "<big>Fichier ".$fichier_name." ajouté</big>";
echo "<br><br>Pour afficher votre video dans une page, inserez le code suivant : <b><a href =http://acr02.fr/membres/srv2/video/".$fichier_name.">http://acr02.fr/membres/srv2/video/".$fichier_name."</a></b>";
}
}
}
}
?>
<br>
<br>
<a href=upload.html>[Retour a l'accueil]</a>
<a href=upload.html>[Charger une nouvelle video]</a>
</center>
</body>
</html>
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
fouillouillou ce bazard !
-;o)
<html>
<body>
<center>
<?php
// Repertoire de stockage des images

$repedest = "video/";
$valid_ext = array('avi','swf','mpg','wmv','mkv','mov','mpeg4');
$taille_max = 35000000000;
if ((!in_array( substr(strrchr($fichier_name, '.'), 1), $valid_ext ) )  ||  filesize($fichier) > $taille_max) {
echo "<big>Veuillez s&eacute;lectionner un fichier de type mpg, avi, swf, mpeg4 de moins de 35mo !</big>";
} else {



if ( file_exists($repedest.$fichier_name) ) {
echo "<big>Le fichier ".$fichier_name." existe déjà !!</big>";
} else {
if ( !file_exists($fichier) ) {
echo "<big>Erreur d'upload...</big>";
} else { // ici on déplace le fichier ou on veut
if ( !@copy( $fichier,filter_var( $repedest.$fichier_name, FILTER_SANITIZE_URL  ) ) ) {
echo "<big>Erreur, contactez l'administrateur...</big>";
} else {
echo "<big>Fichier ".$fichier_name." ajouté</big>";
echo "<br><br>Pour afficher votre video dans une page, inserez le code suivant : <b><a href =http://acr02.fr/membres/srv2/video/".$fichier_name.">http://acr02.fr/membres
/srv2/video/".$fichier_name."</a></b>";
}
}
}
}
?>
<br>
<br>
<a href=upload.html>[Retour a l'accueil]</a>
<a href=upload.html>[Charger une nouvelle video]</a>
</center>
</body>
</html>

il voudra peut être que tu intercales une variable.
et ton code est pas des plus orthodoxes, il utilise pas 'move_uploaded_file()' qui est pourtant faite pour !
0
asus02 Messages postés 215 Statut Membre 13
 
comme je te l'ai deja dit je suis novice en php si tu peut m'explique clairement voir avec un exemple
que ce post me serve a avancer car la je nage complet
merci d'avance
en plus j'aimerais que le lien me donne le lien diret plu le lien avec lecteur

<OBJECT
   classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95"
   codebase="http://activex.microsoft.com/activex/
   controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" Name="MediaPlayer" ID="MediaPlayer"
   style="BACKGROUND-IMAGE: images/sons/beuzaf.com.jpg; background-position: center center;">
          <param name="AutoStart" value="True">
          <param name="AutoSize" value="false"200" height="200"">
          <param name="DisplaySize" value="0">
          <param name="EnableContextMenu" value="False">
          <param name='src' value='http://acr02.fr/membres/srv2/titre.wmv'.<embed src='http://beuzaf.com/clip/clips/le-parking_consequence.wmv' type='audio/x-pn-realaudio-plugin' console='Clip1' controls='ImageWindow'          <param name="ShowControls" value="False">

          <param name="ShowStatusBar" value="True">
</object>
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
regarde ce source.
il y a une gestion complète des erreurs, je t'ai ajouté des commentaires. dans ce cas c'était pour des images.
<?php
define( 'IMAGE_MAX_SIZE', 35000000000 ); // la valeur est fixe donc une constante plutôt qu'une variable, en général on mets les constantes en début de document, comme ça on peut modifier les paramètres sans avoir à chercher dans le code.
define( 'REP_DEST', 'video/' ); 

try // un bloc Try..Catch, toutes les erreurs qui se produisent dans Try sont gérées par toi dans le Catch
{
	// et c'est parti !
	if( !isset( $_FILES['img'] ) ) //on vérifie qu'il y ait bien un fichier de chargé, sinon on lève une erreur qui sera gérée par le Catch (on l'affichera en fait)
	{
		throw new Exception( 'Aucun fichier &agrave; t&eacute;l&eacute;charger.');
	}

	$extension = strtolower( strrchr( $_FILES['img']['name'], '.' ) ); // on récupère l'extension du fichier en minuscules

	if( !in_array( $extension, array( '.gif', '.jpg', '.jpeg', '.png' ) ) ) // on vérifie que l'extension soit autorisée, sinon : erreur !
	{
		throw new Exception( 'Vous devez uploader un fichier de type gif, jpg, jpeg.');
	}
	
	if( filesize( $_FILES['img']['tmp_name'] ) > IMAGE_MAX_SIZE ) // on vérifie que la taille du fichier soit inférieure au max, sinon...
	{
		throw new Exception( 'Le fichier est trop volumineux.');
	}

	$fileName = filter_var( $_FILES['img']['name'], FILTER_SANITIZE_URL ); // on crée le nom du fichier sur le serveur, en fait on nettoie le nom du fichier qui a été envoyé (pas d'espaces, de caractères spéciaux...)

	if( move_uploaded_file( $_FILES['img']['tmp_name'], REP_DEST.$fileName ) ) // on tente de transférer le fichier du dossier temporaire jusqu'au dossier que tu as choisi.
	{
		echo( "<p>Transfert r&eacute;ussi.</p>\n" ) // si c'est ok, on dit "Bravo !"
	}
	else
	{
		throw new Exception( 'Echec de l\'upload.'); // sinon on lève une erreur
	}
}
Catch ( Exception $e )
{
	echo( "<p>".$e->getMessage()."</p>\n" ); // quand une erreur est levée, elle attérie là et est affichée.
}		
?>
0
asus02 Messages postés 215 Statut Membre 13
 
desole mais je pige pas ....

ca me soule tout marche sauf que les esoace et les points ne sont pas pris en charge ce qui fait que le lien final n'est pas bon malgre que le fichier soit bien uploader sur le serveur..
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
t'as essayé ce que je t ai mis en <11> ?
c'est souligné au milieu du code
if ( !@copy( $fichier,filter_var( $repedest.$fichier_name, FILTER_SANITIZE_URL  ) ) ) {
0
asus02 Messages postés 215 Statut Membre 13
 
tester et non apres l'upload le module disparait et je n'est plus le lien
0
asus02 Messages postés 215 Statut Membre 13
 
et avec un tru comme ca ca pourrais pas coller


$dest_fichier = strtr($dest_fichier,

'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',

'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');

// remplacer les caracteres autres que lettres, chiffres et point par _

$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);


ou

{
				$nom_img = preg_replace("/\.([a-zA-Z]{3,4})$/i", "_".time().".\\1", $nom_img);
			}
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
ba si !
c'est la même chose !

prend le premier, le deuxième a joute l'horodatage.
0
asus02 Messages postés 215 Statut Membre 13
 
donc il faut que je place ca ou sur mon code pour que ca marche
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
<html>
<body>
<center>
<?php
// Repertoire de stockage des images

$repedest = "video/";
$valid_ext = array('avi','swf','mpg','wmv','mkv','mov','mpeg4');
$taille_max = 35000000000;
if ((!in_array( substr(strrchr($fichier_name, '.'), 1), $valid_ext ) )  ||  filesize($fichier) > $taille_max) {
echo "<big>Veuillez s&eacute;lectionner un fichier de type mpg, avi, swf, mpeg4 de moins de 35mo !</big>";
} else {



if ( file_exists($repedest.$fichier_name) ) {
echo "<big>Le fichier ".$fichier_name." existe déjà !!</big>";
} else {
if ( !file_exists($fichier) ) {
echo "<big>Erreur d'upload...</big>";
} else { // ici on déplace le fichier ou on veut

$dest_fichier = $repedest.$fichier_name;

$dest_fichier = strtr($dest_fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');

$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);


if ( !@copy( $fichier, $dest_fichier ) ) {
echo "<big>Erreur, contactez l'administrateur...</big>";
} else {
echo "<big>Fichier ".$fichier_name." ajouté</big>";
echo "<br><br>Pour afficher votre video dans une page, inserez le code suivant : <b><a href =http://acr02.fr/membres/srv2/video/".$fichier_name.">http://acr02.fr/membres

/srv2/video/".$fichier_name."</a></b>";
}
}
}
}
?>
<br>
<br>
<a href=upload.html>[Retour a l'accueil]</a>
<a href=upload.html>[Charger une nouvelle video]</a>
</center>
</body>
</html>
0