Ajouter une extension valide à class.chip_download

Résolu
22youenn Messages postés 17 Date d'inscription jeudi 31 octobre 2013 Statut Membre Dernière intervention 9 février 2016 - Modifié par jordane45 le 5/10/2014 à 16:50
22youenn Messages postés 17 Date d'inscription jeudi 31 octobre 2013 Statut Membre Dernière intervention 9 février 2016 - 6 oct. 2014 à 20:48
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.

7 réponses

jordane45 Messages postés 37532 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2023 341
5 oct. 2014 à 16:50
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.
0
jordane45 Messages postés 37532 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2023 341
5 oct. 2014 à 16:57
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'
    );



0
22youenn Messages postés 17 Date d'inscription jeudi 31 octobre 2013 Statut Membre Dernière intervention 9 février 2016 1
5 oct. 2014 à 17:18
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+
0
jordane45 Messages postés 37532 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2023 341
5 oct. 2014 à 18:25
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)
0
22youenn Messages postés 17 Date d'inscription jeudi 31 octobre 2013 Statut Membre Dernière intervention 9 février 2016 1
5 oct. 2014 à 18:43
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.
0

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

Posez votre question
22youenn Messages postés 17 Date d'inscription jeudi 31 octobre 2013 Statut Membre Dernière intervention 9 février 2016 1
5 oct. 2014 à 19:04
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...
0
jordane45 Messages postés 37532 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2023 341
6 oct. 2014 à 00:22
<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;
    }


0
22youenn Messages postés 17 Date d'inscription jeudi 31 octobre 2013 Statut Membre Dernière intervention 9 février 2016 1
6 oct. 2014 à 20:48
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,
0