IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

uploader différents types de fichiers


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 019
    Par défaut uploader différents types de fichiers
    Bonjour à tous,

    Actuellement j'ai fais un espace d'échange sur un site, où les personnes peuvent s'échanger des documents .pdf.
    J'aimerais savoir s'il serait possible de rajouter d'autres formats comme .doc (word) ou .xls au code ci-dessous? merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <ul>
     
    <p>Vous pouvez partager vos documents .pdf dans cette partie.</p>
     
    <form action="<?php print $PHP_SELF?>" enctype="multipart/form-data" method="post">
     
     Nom du fichier:<br /> <input type="text" name="name" value="" /><br />
     
     <br /> <input type="file" name="classnotes" value="" /><br />
     
    <p><input type="submit" name="submit" value="Envoyer" /></p>
     
    	</form>
     
    			<?php
    	  define ("FILEREPOSITORY","./documents_forum/");
     
      if (is_uploaded_file($_FILES['classnotes']['tmp_name'])) {
     
          if ($_FILES['classnotes']['type'] != "application/pdf") {
    	 echo "<p>Le document n'est pas au format PDF.</p>";
      } else {
    	     $name = $_POST['name'];
     
        $result = move_uploaded_file($_FILES['classnotes']['tmp_name'], 
    FILEREPOSITORY."/$name.pdf");
     
      if ($result == 1) echo "<p>Le Document est télécharger.</p>";
    	  else echo "<p>Le document n'ai pas télécharger.</p>";
    			   } #endIF
    			   } #endIF
     
     
    		?>
    				<br>
     
                            <table>
    							<tr><td>Visualiser les documents:</td></tr>
    			<tr>
    				 <td>
     
     
    				<?php
    $repertoire = './documents_forum/';
    	$tableau_fichiers = glob($repertoire."*.pdf");
     
    	foreach ($tableau_fichiers as $filename) {  echo '<a href="'.$filename.'" target="_blank">'.basename($filename).'</a><br>';
    			}
    			?>
    			</td>
     
    								</tr>
     
    	</table>
     
    	</ul>

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Le mieux c'est de mettre dans un Array les types que tu veux autoriser, ensuite tester le type du fichier s'il est dans le tableau avec la fonction in_array.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $typeMime = array("application/pdf", "application/msword", "application/vnd.ms-excel");
    if ( ! in_array($_FILES['classnotes']['type'], $typeMime))
    A+.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 019
    Par défaut uploader différents type de fichier
    Merci mais je ne vois pas trop comment l'integrer et où exactement juste aprés le define?

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    if ($_FILES['classnotes']['type'] != "application/pdf") {
    echo "<p>Le document n'est pas au format PDF.</p>";
    }
    à remplacer par,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $typeMime = array("application/pdf", "application/msword", "application/vnd.ms-excel");
    if ( ! in_array($_FILES['classnotes']['type'], $typeMime)) {
    	 echo "<p>Le document n'est pas au format PDF.</p>";
      }
    Tu peux ajouter le type mime avec des types que tu veux autoriser.

    A+.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 019
    Par défaut uploader différents type de fichier
    Est comment je fais pour l'extension qui du coup est variable, je le prends dans $typeMime?

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2012
    Messages : 17
    Par défaut
    Salut.

    Tu peux déjà commencer par prendre l'extension du fichier, c'est plus clair :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $extension = substr($_FILES['classnotes']['name'],  strrpos($_FILES['classnotes']['name'], '.') + 1);
    Ensuite comme le dit andry.aime tu mets les extensions autorisées dans un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $extValides = array('pdf', 'doc', 'docx');
    Et tu fais la vérification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!in_array($extension, $extValides)) {
    	 echo "<p>Le document n'est pas au bon format.</p>";
      }
    Du coup toutes les extensions que tu souhaites accepter tu les mets dans $extValides et ça passera que pour ces extensions !

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 019
    Par défaut uploader différents type de fichier
    Les extensions autorisées dans un tableau ça c'est bon, apparamment il me manque à prendre l'extension et faire la verification...merci je vais essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    	<ul>
     
      <p>Vous pouvez partager vos documents .pdf dans cette partie.</p>
     
    <form action="<?php print $PHP_SELF?>" enctype="multipart/form-data" method="post">
    	Nom du fichier:<br /> <input type="text" name="name" value="" /><br />
    	 <br /> <input type="file" name="classnotes" value="" /><br />
       <p><input type="submit" name="submit" value="Envoyer" /></p>
    			</form>
     
     
     
     
    		<?php
     
    				  define ("FILEREPOSITORY","./documents_forum/");
     
    	 if (is_uploaded_file($_FILES['classnotes']['tmp_name'])) {
     
     
             	 $typeMime = array("application/pdf", "application/msword", "application/vnd.ms-excel");
    										if ( ! in_array($_FILES['classnotes']['type'], $typeMime))
     
    										{
     
    								 echo "<p>Le document n'est pas au format PDF.</p>";
     
     											 }
     
    		  else
     
    		   {
     
     
    	  $name = $_POST['name'];
      $result = move_uploaded_file($_FILES['classnotes']['tmp_name'], FILEREPOSITORY."/$name.pdf");
             if ($result == 1) echo "<p>Le Document est télécharger.</p>";
    else echo "<p>Le document n'ai pas télécharger.</p>";
    		   } #endIF
    		  } #endIF
     
     
    			?>
    		<br>
     
                            <table>
    							<tr><td>Visualiser les documents:</td></tr>
    				<tr>
    				  	  <td>
     
     
    			<?php
    				$repertoire = './documents_forum/';
    		$tableau_fichiers = glob($repertoire."*.pdf");
     
    	foreach ($tableau_fichiers as $filename) {
    	    echo '<a href="'.$filename.'" target="_blank">'.basename($filename).'</a><br>';
    				}
    				?>
    			</td>
     
    								</tr>
     
    		</table>
     
    	</ul>

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par Feynn
    $extension = substr($_FILES['classnotes']['name'], strrpos($_FILES['classnotes']['name'], '.') + 1);
    Les problèmes avec ton code sont:
    -nom de fichier pourrait contenir zero ou plusieurs points.
    -l'extension pourrait être en majuscule.

    Or qu'avec un type mime, on peut même avoir plusieurs extensions valides pour un seul (ex: image/jpeg => jpe, jpg, jpeg).

    A+.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 019
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 019
    Par défaut uploader différents type de fichier
    MERCI,
    Je reussis grâce à vous à télécharger le document avec la bonne extension mais si je télécharge l'un aprés l'autre le second fichier ecrase le premier!
    Comment ça se fait?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    	<ul>
     
    	  <p>Vous pouvez partager vos documents .pdf dans cette partie.</p>
     
    <form action="<?php print $PHP_SELF?>" enctype="multipart/form-data" method="post">
      Nom du fichier:<br /> <input type="text" name="name" value="" /><br />
      <br /> <input type="file" name="classnotes" value="" /><br />
       <p><input type="submit" name="submit" value="Envoyer" /></p>
    </form>
     
     
     
     
    		<?php
     
    	   define ("FILEREPOSITORY","./documents_forum/");
     
                                $extension = substr($_FILES['classnotes']['name'], strrpos($_FILES['classnotes']['name'], '.') + 1);
     
    	   if (is_uploaded_file($_FILES['classnotes']['tmp_name'])) {
     
     
               $typeMime = array("application/pdf", "application/msword", "application/vnd.ms-excel");
     
    										if ( ! in_array($_FILES['classnotes']['type'], $typeMime))
     
    									{
     
            										 echo "<p>Le document n'est pas au format PDF.</p>";
     
     											 }
     
    		  else
     
    			   {
     
     
             $name = $_POST['name'];
    	         $result = move_uploaded_file($_FILES['classnotes']['tmp_name'], FILEREPOSITORY."$name."."$extension");
    	         if ($result == 1) echo "<p>Le Document est télécharger.</p>";
    	         else echo "<p>Le document n'ai pas télécharger.</p>";
    		      } #endIF
    		   } #endIF
     
     
    			?>
    				<br>
     
                            <table>
    							<tr><td>Visualiser les documents:</td></tr>
    				<tr>
    			  <td>
     
     
    <?php
    	$repertoire = './documents_forum/';
    $tableau_fichiers = glob($repertoire."*.".$extension);
     
    foreach ($tableau_fichiers as $filename) {
    						    echo '<a href="'.$filename.'" target="_blank">'.basename($filename).'</a><br>';
    		}
    	?>
    		</td>
     
    								</tr>
     
    	</table>
     
    	</ul>

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2012
    Messages : 17
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Les problèmes avec ton code sont:
    -nom de fichier pourrait contenir zero ou plusieurs points.
    -l'extension pourrait être en majuscule.

    Or qu'avec un type mime, on peut même avoir plusieurs extensions valides pour un seul (ex: image/jpeg => jpe, jpg, jpeg).

    A+.
    Pour zéro points il suffit d'accepter l'extension ''. Pour plusieurs points ça marche. Si l'extension est par exemple ".xml.twig" alors mon code donne bien "twig". Par contre si on veut "xml.twig" il faut utiliser strpos() à la place de strrpos().

    Pour les extensions en lettres majuscules c'est un faux problème ça : strtolower() et c'est bon.

    Pour ton exemple de jpeg je suis d'accord avec toi.


    Citation Envoyé par Marc31 Voir le message
    Je rectifie il écrase pas car tous les fichiers restent dans le dossier documents_forum parcontre sur le site il n'arrive pas à recuperer les differentes extensions...
    J'ai pas compris.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Méta données de différents types de fichier
    Par pepelele dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2007, 16h38
  2. Réponses: 5
    Dernier message: 11/09/2006, 18h29
  3. [Upload] Type de fichiers et extensions pour upload
    Par temperature dans le forum Langage
    Réponses: 3
    Dernier message: 27/04/2006, 16h28
  4. Réponses: 10
    Dernier message: 18/11/2003, 19h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo