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 :

Problème upload photo


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 19
    Points : 13
    Points
    13
    Par défaut Problème upload photo
    Je souhaiterais urploader une photo dans "id/pics/nouvel ans/
    Mais cela ne marche pas.Mais si le dossier ne contient pas d'espace comme id/pics/google ça mache!! Aidez moi svp

    Code PHP : 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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    <?php include "config.php";?>
    <header>
    <link rel="stylesheet" href="style.css" />
    </header>
    <up><form name="upload" enctype="multipart/form-data" method="post" action="upload.php">
      <input type="file" name="file">
      <br><br>
      Choisir le dossier de destination :<br>
      <select name="folder">
      <?php
      $query = $bdd->query("SELECT * FROM album WHERE user ='".$_SESSION['pseudo']."'");
    $c = $query->fetch();
     
    while( $c = $query->fetch()){
    $r=$c['url'];
     
    $a=$c['name'];
    $b=ereg_replace(' ','%',$a);
    $requette = $bdd->query("SELECT * FROM dossier WHERE user ='".$_SESSION['pseudo']."'");
    $d = $requette->fetch();
    $idd=$d['id'];
    ?>
     
        <option name="folder"value="<?php echo $idd;?>/pics/<?php echo $b;?>/"><?php echo $a;?></option>
    	<?php }?>
      </select>
      <br><br>
      <input type="submit" name="submit" value="Envoyer le fichier">
    </form>
    <br>
    <br>
    </body>
    </html>
    <?php
    if(isset($_POST['submit'])){
     
    $DESTINATION_FOLDER = $_POST["folder"];							//
    // Taille maximale de fichier, valeur en bytes					//
    $MAX_SIZE = 5000000;											//
    // Récupération de l'url de retour								//
    $RETURN_LINK = $_SERVER['HTTP_REFERER'];						//
    // Définition des extensions de fichier autorisées (avec le ".")//
    $AUTH_EXT = array(".docx", ".pdf", ".jpg", ".ppt", ".JPG",		//
    	".bmp", ".gif");											//
    // ############################################################ //
     
    // Fonction permettant de créer un lien de retour automatique
     
    function createReturnLink(){
    	global $RETURN_LINK;
    	echo "<a href='".$RETURN_LINK."'>Retour</a><br>";
    }
     
    // Fonction permettant de vérifier si l'extension du fichier est
    // autorisée.
     
    function isExtAuthorized($ext){
    	global $AUTH_EXT;
    	if(in_array($ext, $AUTH_EXT)){
    		return true;
    	}else{
    		return false;
    	}
    }
     
    // On vérifie que le champs contenant le chemin du fichier soit
    // bien rempli.
     
    if(!empty($_FILES["file"]["name"])){
     
    	// Nom du fichier choisi:
    	$nomFichier = $_FILES["file"]["name"] ;
    	// Nom temporaire sur le serveur:
    	$nomTemporaire = $_FILES["file"]["tmp_name"] ;
    	// Type du fichier choisi:
    	$typeFichier = $_FILES["file"]["type"] ;
    	// Poids en octets du fichier choisit:
    	$poidsFichier = $_FILES["file"]["size"] ;
    	// Code de l'erreur si jamais il y en a une:
    	$codeErreur = $_FILES["file"]["error"] ;
    	// Extension du fichier
    	$extension = strrchr($nomFichier, ".");
     
    	// Si le poids du fichier est de 0 bytes, le fichier est
    	// invalide (ou le chemin incorrect) => message d'erreur
    	// sinon, le script continue.
    	if($poidsFichier <> 0){
    		// Si la taille du fichier est supérieure à la taille
    		// maximum spécifiée => message d'erreur
    		if($poidsFichier < $MAX_SIZE){
    			// On teste ensuite si le fichier a une extension autorisée
    			if(isExtAuthorized($extension)){
    				// Ensuite, on copie le fichier uploadé ou bon nous semble.
    				$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier);
    				if($uploadOk){
    					echo("L'upload a réussi !<br><br>");
    					echo(createReturnLink());
    				}else{
    					echo("L'upload a échoué !<br><br>");
    					echo(createReturnLink());
    				}
    			}else{
    				echo ("Les fichiers avec l'extension $extension ne peuvent pas être uploadés !<br>");
    				echo (createReturnLink()."<br>");
    			}
    		}else{
    			$tailleKo = $MAX_SIZE / 1000;
    			echo("Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : $tailleKo Ko.<br>");
    			echo (createReturnLink()."<br>");
    		}		
    	}else{
    		echo("Le fichier choisi est invalide !<br>");
    		echo (createReturnLink()."<br>");
    	}
    }else{
    	echo("Vous n'avez pas choisi de fichier !<br>");
    	echo (createReturnLink()."<br>");
    }}
    ?></up>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Tu peux éventuellement remplacer les espaces par %20.

    la doc dis ici

    "id/pics/nouvel ans/"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $ton_path  = "id/pics/nouvel ans/";
    $remplacent = "%20";
    $string = ereg_replace(' ', $remplacent, $ton_path);
    echo $string; /* vérification ;-) */
    ?>
    Retourne
    "id/pics/nouvel%20ans/"
    @+

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Mais si le dossier ne contient pas d'espace comme id/pics/google ça mache!!
    Pourquoi donc chercher une autre solution alors que tu viens d'en trouver : nommer ces répertoires (ou dossiers) sans espaces.
    Faire autrement c'est se mettre (sérieusement) des bâtons dans les roues.

    Une règle qui au passage j'applique toujours, c'est de ne jamais nommer mes fichiers et répertoires avec des caractères spéciaux, c'est à dire : espace, àé&çù, etc, etc ...

    Utilise le caractère underscore _ pour simuler un espace, ce caractère est parfaitement correcte (n'est pas un caractère spécial).
    Donc renomme ton répertoire comme : nouvel_an
    Et l'affaire est réglée.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  4. #4
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Bonjour,

    Je suis du même avis que RunCodePhp.

    Quel mauvaise habitude ces espaces, caractères spéciaux,etc.

    Natso.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    - <header> ???
    - la balise <up>, c'est nouveau ?
    - faire des echo ...; après la balise </html>, c'est nouveau aussi ?

    Bref : ce serait bien de revoir l'organisation du code.
    Et connaitre la structure "type" d'une page serait un "plus" (avec doctype, head, body...).

  6. #6
    Invité
    Invité(e)
    Par défaut
    Pourquoi donc chercher une autre solution alors que tu viens d'en trouver : nommer ces répertoires (ou dossiers) sans espaces.
    Personne ne sais si c'est à lui de nommer les répertoires/fichiers, même si cela ressemble à un projet perso et que sur le principe je suis entièrement d'accord avec toi RunCodePhp Ont est parfois tributaires d'autres personnes qui n'ont jamais fait autres chose que du traitement de texte .

    @+
    Dernière modification par Invité ; 23/12/2012 à 10h47.

Discussions similaires

  1. Problème Upload photo utilisateur
    Par slashsword dans le forum Ruby
    Réponses: 2
    Dernier message: 08/10/2012, 12h01
  2. [Upload] Problème upload photo serveur Windows
    Par jpower dans le forum Langage
    Réponses: 1
    Dernier message: 04/10/2007, 14h12
  3. [Upload] Problème upload
    Par Kips dans le forum Langage
    Réponses: 2
    Dernier message: 31/01/2006, 13h28
  4. problème upload avec XMLHttpRequest
    Par alexmorel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/12/2005, 17h36
  5. [Upload] upload photo
    Par digger dans le forum Langage
    Réponses: 1
    Dernier message: 07/11/2005, 17h52

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