Un script PHP pour uploader des fichiers sur le serveur

Eléphant du PHP | 355 Messages

19 nov. 2005, 11:07

Bonjour à tous :wink:

Je voudrai créer un script en PHP qui permette d’uploader des fichiers sur le serveur, quelqu’un saurait-il m’aider ?

Eléphant du PHP | 82 Messages

19 nov. 2005, 13:09

Sébastien.

Eléphant du PHP | 355 Messages

19 nov. 2005, 17:14

Bonjour s3b54sk8 et merci :wink:

J’ai donc récupéré ceci sur le lien que vous m’avez donné:
<!-- Formulaire --><!-- Attention, ne de ne pas oublier le  enctype="multipart/form-data" --><form method="POST" action="notre_script.php" enctype="multipart/form-data"><!-- Limiter la taille des fichiers à 500Ko --><input type="hidden" name="MAX_FILE_SIZE" value="500000" /> <fieldset><legend>Envoi de fichiers</legend><!-- champs d'envoi de fichier, de type file --><p><label for="Fichier">Fichier :</label><input type="file" name="photo" /></p><!-- bouton d'envoi --><p><input type="submit" name="envoi" value="Envoyer le fichier" /></p></legend></fieldset></form>
J’ai vu sur le lien qu’il faut d’abord uploader le fichier qui sera placer dans un répertoire temporaire puis ensuite il faut le copier au bonne endroit, mais je n’en suis pas la car j’ai un petit souci avec se premier script pour uploader le fichier, j’ai donc placer mon script php dans le répertoire www de EasyPHP, puis je l’ai lancer dans mon navigateur, la page affiche 1 bouton pour aller chercher le fichier sur le disque dur puis 1 autre bouton pour l’envoyer sur le serveur, donc je vais chercher un fichier puis je clique sur envoyer et la apparaît une page introuvable, voyer vous se qui ne va pas ?

Eléphant du PHP | 355 Messages

19 nov. 2005, 17:17

Et au faite s'est possible aussi d'envoyer un dossier ?

Ou bien alors un zip puis de le déziper une fois sur le serveur ?

Eléphant du PHP | 80 Messages

19 nov. 2005, 17:27

Tu ne peux pas uploader de dossiers.
Par contre, il y a effectivement moyen d'uploader un zip et de l'extraire sur le serveur. Pour l'extraire, fais uen recherche google, tu devrais trouver assez facilement.

a+
Merci à tous!

Eléphant du PHP | 355 Messages

19 nov. 2005, 21:33

Bonjour agilis et merci :wink:

Bon OK pas de dossier, je vais faire une petite recherche pour les .zip.

Je revien a mon script :
<!-- Formulaire -->
<!-- Attention, ne de ne pas oublier le  enctype="multipart/form-data" -->
<form method="POST" action="notre_script.php" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers à 500Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="500000" /> 
<fieldset>
<legend>Uploader vos images</legend>
<!-- champs d'envoi de fichier, de type file -->
<p><label for="logo">Logo :</label><input type="file" name="logo" /></p>
<p><label for="photo">Photo :</label><input type="file" name="photo" /></p>
<!-- bouton d'envoi -->
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</legend>
</fieldset>
</form>
J’aimerai pouvoir ajouter à mon script une limite de taille pour le logo à 80 px sur 80 px, et pour la photo à 700 px sur 500 px, quelqu’un pourrait-il m’aider je bloque complètement ?

Eléphant du PHP | 82 Messages

19 nov. 2005, 21:39

La fonction getimagesize() pourra t'être utile je pense.

Edit : je te fais le code des vérifications de suite :wink:
Sébastien.

Eléphant du PHP | 355 Messages

19 nov. 2005, 21:58

Merci pour le lien :wink:

J'ai regarder mais je n'arrive vraiment pas a comprendre comentje peut intégrer cette fonction à mon script, pouriez vous m'aider ?

Eléphant du PHP | 82 Messages

19 nov. 2005, 22:02

Exemple pour les photos :
<?php

if(isset($_FILES['photo'])){

	// params
	unset($erreur);
	$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
	$taille_max = 100000;
	$dest_dossier = '/home/monsite/photos/';
	
	// vérifications
	if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
	{
		$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';  
	}
	elseif( file_exists($_FILES['photo']['tmp_name']) 
          and filesize($_FILES['photo']['tmp_name']) > $taille_max)
	{
		$erreur = 'Votre fichier doit faire moins de 500Ko !';
	}

	//
	// Vérification de la taille de la photo
	//
	
	// Définition de la longueur et de la largeur max
	$longueur_photo_max = "700"; 
	$largeur_photo_max = "500"; 

	elseif(file_exists($_FILES['photo']['tmp_name'])){

		$size = getimagesize($_FILES['photo']['tmp_name']);

		if(($size[0] > $largeur_photo_max) || ($size[1] > $longueur_photo_max)){
			$erreur = 'Les dimensions de la photo sont trop grandes !';
		}

	}
	//
	// Fin de la vérification
	//


  // copie du fichier
  if(!isset($erreur))
  {
    $dest_fichier = basename($_FILES['photo']['name']);
    // formatage nom fichier
    // enlever les accents
    $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    // remplacer les caracteres autres que lettres, chiffres et point par _
    $dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
    // copie du fichier
    move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
  }
}

?>
Modifié en dernier par s3b54sk8 le 19 nov. 2005, 22:06, modifié 1 fois.
Sébastien.

Eléphant du PHP | 355 Messages

19 nov. 2005, 22:06

Merci pour votre patience :wink:

J'ai essayer comme ceci:
<!-- Formulaire -->
<!-- Attention, ne de ne pas oublier le  enctype="multipart/form-data" -->
<form method="POST" action="notre_script.php" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers à 500Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="500000" /> 
<fieldset>
<legend>Uploader vos images</legend>
<!-- champs d'envoi de fichier, de type file -->
<p><label for="logo">Uploader votre logo : </label><input type="file" name="logo" /></p>
<p><label for="photo">Uploader votre photo : </label><input type="file" name="photo" /></p>
$longueur_photo_max = "700"; 
    $largeur_photo_max = "500"; 

    elseif(file_exists($_FILES['photo']['tmp_name'])){ 

        $size = getimagesize($_FILES['photo']['tmp_name']); 

        if(($size[0] > $largeur_photo_max) || ($size[1] > $longueur_photo_max)){ 
            $erreur = 'Les dimensions de la photo sont trop grandes !'; 
        } 

    } 
<!-- bouton d'envoi -->
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</legend>
</fieldset>
</form> 
Mais je bloque encore :oops:

Eléphant du PHP | 82 Messages

19 nov. 2005, 22:07

Oui désolé, j'ai édité mon message, je m'étais trompé dans le copier/collé, j'avais pris que la partie du code que j'ai faite sans préciser ou la mettre :oops:
Sébastien.

Eléphant du PHP | 355 Messages

19 nov. 2005, 22:10

OK merci encore :wink:

Mais se script me renvoi l'erreur:

Code : Tout sélectionner

Parse error: parse error in C:\easyPHP\www\upload\upload_2a.php on line 30

Mammouth du PHP | 983 Messages

19 nov. 2005, 22:13

C'est parce qu'il y a du code entre 2 else if.

Voici la correction du code donné par s3b54sk8
<?php

if(isset($_FILES['photo'])){

    // params
    unset($erreur);
    $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
    $taille_max = 100000;
    $dest_dossier = '/home/monsite/photos/';
    
    // vérifications
    if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
    {
        $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';  
    }
    elseif( file_exists($_FILES['photo']['tmp_name'])
          and filesize($_FILES['photo']['tmp_name']) > $taille_max)
    {
        $erreur = 'Votre fichier doit faire moins de 500Ko !';
    }

    //
    // Vérification de la taille de la photo
    //
    
   

    elseif(file_exists($_FILES['photo']['tmp_name'])){
		 // Définition de la longueur et de la largeur max
    	$longueur_photo_max = "700";
    	$largeur_photo_max = "500";
        $size = getimagesize($_FILES['photo']['tmp_name']);

        if(($size[0] > $largeur_photo_max) || ($size[1] > $longueur_photo_max)){
            $erreur = 'Les dimensions de la photo sont trop grandes !';
        }

    }
    //
    // Fin de la vérification
    //


  // copie du fichier
  if(!isset($erreur))
  {
    $dest_fichier = basename($_FILES['photo']['name']);
    // formatage nom fichier
    // enlever les accents
    $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    // remplacer les caracteres autres que lettres, chiffres et point par _
    $dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
    // copie du fichier
    move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
  }
}

?>

Eléphant du PHP | 82 Messages

19 nov. 2005, 22:13

Arg je suis même plus capable d'aider sans faire de super boulettes :cry:
Sébastien.

Eléphant du PHP | 355 Messages

19 nov. 2005, 22:24

Bonjour rami et merci :wink:

Avec votre code la page et completement vide.