Upload d'images.

béka
Invité n'ayant pas de compte PHPfrance

04 mai 2006, 16:42

ca ne marche pas, tu es sur qu'il n'y a iren d'autre a changer que l'extension du fait que c'est un pdf ?

Invité
Invité n'ayant pas de compte PHPfrance

04 mai 2006, 18:33

Bien non, ça fonctionne avec tous les types de fichiers, je viens d'essayer :

Il faut un répertoire upload au même endroit de que le script php.
<?php

if( isset($_POST['envoi']) )
{
    // Vérification de l'image
    if( isset($_FILES['pdf']) )
    {
        unset($message);
        $ext = array('pdf', 'PDF');
        $poids = 2000000;
        
        $temp = './upload/';
        
        if( !in_array(substr(strrchr($_FILES['pdf']['name'], '.'), 1), $ext) )
        {
            $message = 'Cette extension de fichiers n\'est pas autorisé.';
        }
        elseif( file_exists($_FILES['pdf']['tmp_name']) && filesize($_FILES['pdf']['tmp_name']) > $poids )
        {
            $message = 'Votre document dépasse la taille autorisée.';
        }
        if( !isset($message) )
        {
            $dest = basename($_FILES['pdf']['name']);
            $dest = strtr($dest,
            'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
            'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
            
            $dest = preg_replace('`([^.a-z0-9]+)`i', '_', $dest);
            // copie du fichier
            $envoi = move_uploaded_file($_FILES['pdf']['tmp_name'], $temp . $dest);
            if( $envoi === false )
            {            
                $reussite = 'Une erreur s\'est produite lors de l\'enregistrement de votre document, merci d\'en aviser l\'administrateur du site';
            }
            else
            {
                $reussite = 'Votre document a bien été enregistré, merci';
            }
        }
        else
        {
            echo $message;
        }
    }

}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-15" />
 </head>
<body>
<?php
if( isset($reussite) ) echo '<p>' . $reussite . '</p>';
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
  <p>
    <!-- <input type="hidden" name="MAX_FILE_SIZE" value="500000" /> -->
    <label for="pdf">Votre fichier <acronym title="Portable Document Format">PDF</acronym> : 
    </label><input type="file" name="pdf" id="pdf" />
  </p>  
  <p>
    <input type="submit" name="envoi" value="Envoyer" />
  </p> 
</form>  

</body>
</html>
Pour les gros fichiers, il faut modifier le php.ini comme expliqué dans le tutoriel, enfin si tu y a accès.