Ajouter une extension valide à class.chip_download [Résolu]

Messages postés
17
Date d'inscription
jeudi 31 octobre 2013
Statut
Membre
Dernière intervention
9 février 2016
-
Bonjour,

j'utilise la class class.chip_download.php pour télécharger des fichiers. mon problème est le suivant : une application, par exemple "application/msword" peut ouvrir plusieurs formats de fichiers (doc et docx).

comment modifier le tableau des extensions de class.chip_download.php :
 private $allowed_extensions = array(
      

   /* Archives */
      'zip' => 'application/zip',
      '7z' => 'application/octet-stream',
     
        /* Documents */
        'txt' => 'text/plain',
      'pdf' => 'application/pdf',
        'doc'  => 'application/msword',
        'xls' => 'application/vnd.ms-excel',
        'ppt' => 'application/vnd.ms-powerpoint',
       
        /* Executables */
        'exe' => 'application/octet-stream',
     
        /* Images */
        'gif' => 'image/gif',
        'png' => 'image/png',
        'jpg' => 'image/jpeg',
        'jpeg' => 'image/jpeg',
     
        /* Audio */
        'mp3' => 'audio/mpeg',
        'wav' => 'audio/x-wav',
     
        /* Video */
        'mpeg' => 'video/mpeg',
        'mpg' => 'video/mpeg',
        'mpe' => 'video/mpeg',
        'mov' => 'video/quicktime',
        'avi' => 'video/x-msvideo'
     
     );


pour que toutes les extensions soit prises en compte.
en effet :
'docx' => 'application/msword',
'doc' => 'application/msword',

dans ce cas je peux télécharger des fichiers docx mais pas des fichiers doc

en effet :
'doc' => 'application/msword',
'docx' => 'application/msword',
dans ce cas je peux télécharger des fichiers doc mais pas des fichiers docx

par contre je veux garder la valeur de "check_extension" à la valeur TRUE.


merci de votre aide.
Afficher la suite 

Votre réponse

7 réponses

Messages postés
25229
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 avril 2019
366
0
Merci
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

J'édite ton message pour les mettre. Merci d'y penser la prochaine fois.
Commenter la réponse de jordane45
Messages postés
25229
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 avril 2019
366
0
Merci
Tu parles d'une class... mais sans nous dire où la trouver...


EDIT =>> Après quelques recherches..
: https://code.google.com/p/zabat-rakamak/source/browse/trunk/class.chip_download.php

Pour en revenir à ton souci.
Tu as essayé de simplement ajouté les extensions dans cette liste ??

    private $allowed_extensions = array(
        /* Archives */
        'zip' => 'application/zip',
        '7z' => 'application/octet-stream',
        /* Documents */
        'txt' => 'text/plain',
        'pdf' => 'application/pdf',
        'doc' => 'application/msword',
        'docx' => 'application/msword',
        'xls' => 'application/vnd.ms-excel',
        'ppt' => 'application/vnd.ms-powerpoint',
        /* Executables */
        'exe' => 'application/octet-stream',
        /* Images */
        'gif' => 'image/gif',
        'png' => 'image/png',
        'jpg' => 'image/jpeg',
        'jpeg' => 'image/jpeg',
        /* Audio */
        'mp3' => 'audio/mpeg',
        'wav' => 'audio/x-wav',
        /* Video */
        'mpeg' => 'video/mpeg',
        'mpg' => 'video/mpeg',
        'mpe' => 'video/mpeg',
        'mov' => 'video/quicktime',
        'avi' => 'video/x-msvideo'
    );



Commenter la réponse de jordane45
Messages postés
17
Date d'inscription
jeudi 31 octobre 2013
Statut
Membre
Dernière intervention
9 février 2016
0
Merci
bonjour,

bien sûr cela a été mon premier reflex.

mais comme je je dit dans mon 1er message (peut-être me suis-je mal expliqué ), le tableau des extension valide de la class "class.chip.download.php est le suivant :

private $allowed_extensions = array(
						
	/* Archives */
	'zip'	=> 'application/zip',
	'7z'	=> 'application/octet-stream',
					
	/* Documents */
	'txt'	=> 'text/plain',
	'pdf'	=> 'application/pdf',
	'doc'	=> 'application/msword',
  	'xls'	=> 'application/vnd.ms-excel',
  	'ppt'	=> 'application/vnd.ms-powerpoint',
				  
  	/* Executables */
  	'exe'	=> 'application/octet-stream',
					
  	/* Images */
  	'gif'	=> 'image/gif',
  	'png'	=> 'image/png',
  	'jpg'	=> 'image/jpeg',
  	'jpeg'	=> 'image/jpeg',
					
  	/* Audio */
  	'mp3'	=> 'audio/mpeg',
  	'wav'	=> 'audio/x-wav',
					
  	/* Video */
  	'mpeg'	=> 'video/mpeg',
  	'mpg'	=> 'video/mpeg',
  	'mpe'	=> 'video/mpeg',
  	'mov'	=> 'video/quicktime',
  	'avi'	=> 'video/x-msvideo'
		
);



j'ai bien essayé de le modifier de la manière suivante :
private $allowed_extensions = array(
						
	/* Archives */
	'zip'	=> 'application/zip',
	'7z'	=> 'application/octet-stream',
					
	/* Documents */
	'txt'	=> 'text/plain',
	'pdf'	=> 'application/pdf',
	'docx'	=> 'application/msword', /*ligne ajouter*/
	'doc'	=> 'application/msword',
  	'xls'	=> 'application/vnd.ms-excel',
  	'ppt'	=> 'application/vnd.ms-powerpoint',
				  
  	/* Executables */
  	'exe'	=> 'application/octet-stream',
					
  	/* Images */
  	'gif'	=> 'image/gif',
  	'png'	=> 'image/png',
  	'jpg'	=> 'image/jpeg',
  	'jpeg'	=> 'image/jpeg',
					
  	/* Audio */
  	'mp3'	=> 'audio/mpeg',
  	'wav'	=> 'audio/x-wav',
					
  	/* Video */
  	'mpeg'	=> 'video/mpeg',
  	'mpg'	=> 'video/mpeg',
  	'mpe'	=> 'video/mpeg',
  	'mov'	=> 'video/quicktime',
  	'avi'	=> 'video/x-msvideo'
		
);

dans ce cas on ne peut télécharger que des fichiers docx

et de la manière suivante :
private $allowed_extensions = array(
						
	/* Archives */
	'zip'	=> 'application/zip',
	'7z'	=> 'application/octet-stream',
					
	/* Documents */
	'txt'	=> 'text/plain',
	'pdf'	=> 'application/pdf',
	'doc'	=> 'application/msword',
	'docx'	=> 'application/msword', /*ligne ajouter*/
  	'xls'	=> 'application/vnd.ms-excel',
  	'ppt'	=> 'application/vnd.ms-powerpoint',
				  
  	/* Executables */
  	'exe'	=> 'application/octet-stream',
					
  	/* Images */
  	'gif'	=> 'image/gif',
  	'png'	=> 'image/png',
  	'jpg'	=> 'image/jpeg',
  	'jpeg'	=> 'image/jpeg',
					
  	/* Audio */
  	'mp3'	=> 'audio/mpeg',
  	'wav'	=> 'audio/x-wav',
					
  	/* Video */
  	'mpeg'	=> 'video/mpeg',
  	'mpg'	=> 'video/mpeg',
  	'mpe'	=> 'video/mpeg',
  	'mov'	=> 'video/quicktime',
  	'avi'	=> 'video/x-msvideo'
		
);

dans ce cas on ne peut télécharger que des fichier doc.

c'est comme si cette class ne supportait qu'un type d'extension par application.

pardon de ne pas avoir mis la coloration syntaxique, maintenant c'est bon.

merci de vos réponses.

a+
jordane45
Messages postés
25229
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 avril 2019
366 -
C'est assez étonnant..; surtout que :
'jpg' => 'image/jpeg',
'jpeg' => 'image/jpeg',
ou encore
/* Video */
'mpeg' => 'video/mpeg',
'mpg' => 'video/mpeg',
'mpe' => 'video/mpeg',

Le souci, pour moi, ne vient pas de là....

Tu as essayé de faire un print_r de $_FILE pour savoir ce qu'il contient ?

Essayes aussi de faire un
 get_allowed_extensions() 

Pour savoir ce qui a été chargé comme extensions autorisées (avec la ligne que tu as ajouté dans le tableau)
Commenter la réponse de 22youenn
Messages postés
17
Date d'inscription
jeudi 31 octobre 2013
Statut
Membre
Dernière intervention
9 février 2016
0
Merci
bonjour,

j'ai trouver une solution, pas tres propre, j'en conviens.

le tableau des extension valide est le suivant :
private $allowed_extensions = array(
						
			/* Archives */
			'zip'	=> 'application/zip',
			'7z'	=> 'application/octet-stream',
					
		  	/* Documents */
		  	'txt'	=> 'text/plain',
			'pdf'	=> 'application/pdf',
			'doc' 	=> 'application/msword',
		  	'xls'	=> 'application/vnd.ms-excel',
		  	'ppt'	=> 'application/vnd.ms-powerpoint',
					  
		  	/* Executables */
		  	'exe'	=> 'application/octet-stream',
					
		  	/* Images */
		  	'gif'	=> 'image/gif',
		  	'png'	=> 'image/png',
		  	'jpg'	=> 'image/jpeg',
		  	'jpeg'	=> 'image/jpeg',
				
		  	/* Audio */
		  	'mp3'	=> 'audio/mpeg',
		  	'wav'	=> 'audio/x-wav',
					
		  	/* Video */
		  	'mpeg'	=> 'video/mpeg',
		  	'mpg'	=> 'video/mpeg',
		  	'mpe'	=> 'video/mpeg',
		  	'mov'	=> 'video/quicktime',
		  	'avi'	=> 'video/x-msvideo'
					
);


je l'ai modifié de la manière suivante :
private $allowed_extensions = array(
						
	/* Archives */
	'zip'	=> 'application/zip',
	'7z'	=> 'application/octet-stream',
					
  	/* Documents */
  	'txt'	=> 'text/plain',
	'pdf'	=> 'application/pdf',
	'doc' 	=> 'application/msword1', /*ligne modifiée*/
  	'docx' 	=> 'application/msword', /*ligne ajoutée*/
  	'xls'	=> 'application/vnd.ms-excel1', /*ligne modifiée*/
  	'xlsx'	=> 'application/vnd.ms-excel', /*ligne ajoutée*/
  	'ppt'	=> 'application/vnd.ms-powerpoint1', /*ligne modifiée*/
  	'pptx'	=> 'application/vnd.ms-powerpoint', /*ligne ajoutée*/
					  
	  	/* Executables */
	  	'exe'	=> 'application/octet-stream',
					
	  	/* Images */
	  	'gif'	=> 'image/gif',
	  	'png'	=> 'image/png',
		'jpg'	=> 'image/jpeg',
		'jpeg'	=> 'image/jpeg',
					
		/* Audio */
		'mp3'	=> 'audio/mpeg',
		'wav'	=> 'audio/x-wav',
					
		/* Video */
		'mpeg'	=> 'video/mpeg',
		'mpg'	=> 'video/mpeg',
		'mpe'	=> 'video/mpeg',
		'mov'	=> 'video/quicktime',
		'avi'	=> 'video/x-msvideo'
					
);


et cela marche.

pour répondre à ta question "Tu as essayé de faire un print_r de $_FILE pour savoir ce qu'il contient ? "
oui et le résutat du print_r correspond à ce que j'attends.

en ce qui concerne ta deuxième question, non je ne l'ai pas encore fait, mais étant donné le résultat de mon dernier test, je pense que les toutes les extensions seront chargées (doc et docx).

merci.
Commenter la réponse de 22youenn
Messages postés
17
Date d'inscription
jeudi 31 octobre 2013
Statut
Membre
Dernière intervention
9 février 2016
0
Merci
je viens de faire un var_dump(get_allowed_extensions())

il apparait que :
la première occurence de chaque application seulement est renvoyé dans le résultat :

$allowed_extensions = $this->get_allowed_extensions();
var_dump($allowed_extensions);


résultat :
array
'zip' => string 'application/zip' (length=15)
'7z' => string 'application/octet-stream' (length=24)
'txt' => string 'text/plain' (length=10)
'pdf' => string 'application/pdf' (length=15)
'doc' => string 'application/msword' (length=18)
'xls' => string 'application/vnd.ms-excel1' (length=25)
'ppt' => string 'application/vnd.ms-powerpoint1' (length=30)
'gif' => string 'image/gif' (length=9)
'png' => string 'image/png' (length=9)
'jpg' => string 'image/jpeg' (length=10)
'mp3' => string 'audio/mpeg' (length=10)
'wav' => string 'audio/x-wav' (length=11)
'mpeg' => string 'video/mpeg' (length=10)
'mov' => string 'video/quicktime' (length=15)
'avi' => string 'video/x-msvideo' (length=15)

avec les extensions par défaut de class.chip_dowload.php.


il n'y a qu'avec un tableau comme suit que l'on a toute les extensions (du moins en ce qui concerne la partie qui nous interesse "Documents") :

	private $allowed_extensions = array(
						
						/* Archives */
						'zip'	=> 'application/zip',
						'7z'	=> 'application/octet-stream',
					
					  	/* Documents */
					  	'txt'	=> 'text/plain',
						'pdf'	=> 'application/pdf',
						'doc' 	=> 'application/msword1',
					  	'docx' 	=> 'application/msword',
					  	'xls'	=> 'application/vnd.ms-excel1',
					  	'xlsx'	=> 'application/vnd.ms-excel',
					  	'ppt'	=> 'application/vnd.ms-powerpoint1',
					  	'pptx'	=> 'application/vnd.ms-powerpoint',
					  	'odt'	=> 'applivation/oowriter',
					  
					  	/* Executables */
					  	'exe'	=> 'application/octet-stream',
					
					  	/* Images */
					  	'gif'	=> 'image/gif',
					  	'png'	=> 'image/png',
					  	'jpg'	=> 'image/jpeg',
					  	'jpeg'	=> 'image/jpeg',
					
					  	/* Audio */
					  	'mp3'	=> 'audio/mpeg',
					  	'wav'	=> 'audio/x-wav',
					
					  	/* Video */
					  	'mpeg'	=> 'video/mpeg',
					  	'mpg'	=> 'video/mpeg',
					  	'mpe'	=> 'video/mpeg',
					  	'mov'	=> 'video/quicktime',
					  	'avi'	=> 'video/x-msvideo'
					
					);



bizarre...
Commenter la réponse de 22youenn
Messages postés
25229
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 avril 2019
366
0
Merci
<blocl>
La première occurence de chaque application seulement est renvoyé
</block>

En fait je pense que c'est du à une fonction de la class :
 private function set_allowed_extensions($allowed_extensions = array()) {

        $defaults = $this->get_allowed_extensions();
        $allowed_extensions = array_unique($this->chip_parse_args($allowed_extensions, $defaults));
        $this->allowed_extensions = $allowed_extensions;
    }



C'est surement le array_unique qui génère cette anomalie...
En modifiant de la façon suivante ça devrait mieux marcher :

 private function set_allowed_extensions($allowed_extensions = array()) {

        $defaults = $this->get_allowed_extensions();
        $allowed_extensions = $this->chip_parse_args($allowed_extensions, $defaults);
        $this->allowed_extensions = $allowed_extensions;
    }


Commenter la réponse de jordane45
Messages postés
17
Date d'inscription
jeudi 31 octobre 2013
Statut
Membre
Dernière intervention
9 février 2016
0
Merci
bonjour,

merci jordane45,

c'est effectivement le array_unique dans la déclaration de la variable "$allowed_extension" qui faisait que je ne retrouvait pas toutes les extensions.

je marque le sujet comme résolu.

cordialement,
Commenter la réponse de 22youenn

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.