direction upload

Eléphant du PHP | 124 Messages

27 août 2007, 21:00

bonjour
de retour de grand deplacement j'ai un peu perdu le pied avec le php
j'ai un petit souci avec un upload,

quand on s'incrit sur mon site ,ça cré automatiquement un dossier au non du pseudo avec devant 01

ex : 01pseudo
pour ma fonction uplod je voudrai que le fihier sois mis dans le dossier du pseudo j'ai donc fait ça
 $dest_dossier = ("galeries/".'01'.$_SESSION['pseudom']); 
galeries =dossier , 01peudom = sous dossier
quand je fait ça ça upload bien mais dans le repertoire galerie avec comme nom de fichier 01pseudom
je crois que c'est une hitoire de ponctuaction mais avec plusieur essai diferent ça ne fonctionne pas
si qu'elquin peut m'eclairer la dessus ça serai sympa
merci pour vos reponse
ti lillois
on regle beaucoup de chose avec le php,
et pour la misere du monde ,on peut s'en servir aussi????

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 août 2007, 22:57

Bonjour,

Il faut que tu spécifies explicitement le nom du fichier dans ton move_uploaded_file()

Voila la variable pour récupérer le nom du fichier uploadé:
$_FILES['nom_du_champ_fichier']['name']
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 124 Messages

28 août 2007, 07:30

bonjour
il st recuperer le non du fichier , je met mon code complet au ka ou
<?php
require_once("../security.php");
if(isset($_FILES['photo']))

$rep=("01". $_SESSION['pseudom']); 
{
  // params
  unset($erreur);
  $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
  $taille_max = 100000;
  $dest_dossier = ("galeries/$rep/"; 

  // $dest_dossier = ("galeries/"); 
  // 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 800Ko !';
  }
  // 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);
  }
}

?>
on regle beaucoup de chose avec le php,
et pour la misere du monde ,on peut s'en servir aussi????

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 août 2007, 08:36

N'aurais tu pas un petit soucis de structure ici :
if(isset($_FILES['photo'])) 

$rep=("01". $_SESSION['pseudom']);  
{ 
Un if qui ne concerne qu'une seule instruction ou une accolade qui n'appartient à aucune structure ? ;)

Bizare également que tu n'ais pas d'erreur en gros, en gras, en rouge à cette ligne :
$dest_dossier = ("galeries/$rep/";  
Et une remarque en passant :
$taille_max = 100000;
...
$erreur = 'Votre fichier doit faire moins de 800Ko !'; 
A mon avis, ils vont chercher un moment pourquoi les fichiers supérieurs à 100Ko ne passent pas ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 124 Messages

28 août 2007, 16:37

c'est pas le bon code que j'ai envoyé celui la je l'ai midifié pour faire des essais en faisant une variable pour le repertoire mais c'est toujours le meme effet

je remet la ligne du dossier de destination
$dest_dossier = ("galeries/".'01'.$_SESSION['pseudom']);
galrie =dossier 01 ession pseudom sous dossier
quand je fait un upload ça me met le fichier dans le repertoire galeries avec comme nom 01lepseudo.jpg
je crois que c'est une erreur de syntax mais apres plusieures façon je vois pas lasquelle
merci pour votre aide
on regle beaucoup de chose avec le php,
et pour la misere du monde ,on peut s'en servir aussi????

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 août 2007, 16:44

sans doute manque-t-il un '/' entre le nom du dossier et le nom du fichier, afin que php puisse distinguer les 2 et écrire au bon endroit...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 124 Messages

28 août 2007, 16:49

j'ai deja fait
$dest_dossier = ("galeries/".'01'.$_SESSION['pseudom']/);
mais la il y a une erreur

Parse error: syntax error, unexpected ')' in /www/sites/1/P/L/site.site.net/site/galerie/telechargement.php on line 13
on regle beaucoup de chose avec le php,
et pour la misere du monde ,on peut s'en servir aussi????

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 août 2007, 16:57

Et en se posant deux minutes et en prenant le temps de réflechir, d'habitude, quand tu veux concaténer un caractère au bout d'une chaine (puisque ton chemin n'est rien de plus qu'une chaine), tu te contentes juste de taper un / n'importe où et ça fonctionne ? ou tu fais un effort pour dire a php qu'il s'agit d'une autre chaine que tu veux concatener ? ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 124 Messages

28 août 2007, 17:05

c'etait bien une erreur de syntax

voici le code exact
 $dest_dossier = ("galeries/"."01".$_SESSION['pseudom']."/");
le script entier viens des tuto du site

je me suis aperçu qu'il tronque les nom des fichiers

ex: photo15 donne photo_1_

pour y remedier

code d'orignine
merci pour vos reponses
$dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
code modifier
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
on regle beaucoup de chose avec le php,
et pour la misere du monde ,on peut s'en servir aussi????