8795 sujets

Développement web côté serveur, CMS

Salut à tous,

J'aurais besoin de votre aide pour un petit script d'upload d'image pour plusieurs utilisateurs différents. J'ai une erreur dans mon code mais je ne vois pas où alors merci de votre aide Smiley smile

En gros, chaque membre à la possibilité d'ajouter des articles avec 1 image. Dans l'ordre,
1/ il crée son article
1/ bis/ j'en profite pour créer 1 répertoire servant à stocker ses images. Le répertoire créé porte son nom (id_billet)
2/ Il peut ajouter une image, qui doit être envoyé dans son répertoire. Et c'est là que ce la bloque : je récupère bien l'id, l'id_billet...
Mais j'ai l'erreur suivante :
Warning: copy(/kunden/homepages/37/XXXXXXX/htdocs/XXXXX/administration/upload/XXXXXXXXX/titi.png) [function.copy]: failed to open stream: No such file or directory in /homepages/37/d309170361/htdocs/XXXXX/amembres/annonces-image2.php on line 17


Donc :
I/ Le lien qui ouvre la page (avec l'id et l'id_billet)

<a href="annonces-image.php?id=<?php echo($result->id) ;?> &id_billet=<?php echo($result->id_billet) ;?>" class="smali">Ajouter  /Modifier l'image</a>


II/ La page Annonces-image.php comprend le formulaire d'upload (avec les variables $id et $id_billet

III/ La page Annonces-image2.php

(Les "echo" $id et $id_billet sont là uniquement pour mes tests pour vérifier que je récupère bien les variables et c'est le cas.)


<?php
$id_billet = $_POST['id_billet'];
$id = $_POST['id'];
echo("'".$id_billet."' '".$id."'<br> ") ;

  $tailleMax =2000000;
  if(!empty($_FILES["fichier_choisi"]["name"])){
  	$nomFichier = $_FILES["fichier_choisi"]["name"] ;
  	$nomTemporaire = $_FILES["fichier_choisi"]["tmp_name"] ;
  	$typeFichier = $_FILES["fichier_choisi"]["type"] ;
  	$poidsFichier = $_FILES["fichier_choisi"]["size"] ;
  	$codeErreur = $_FILES["fichier_choisi"]["error"] ;
  	$chemin = "/kunden/homepages/37/XXXXXXXXX/htdocs/XXXXXX/administration/upload/".$id_billet."/"; 
  
  	if ($tailleMax > $poidsFichier) {
  
  	if(copy($nomTemporaire, $chemin.$nomFichier)){ 
  
    $cnx = mysql_connect( "XXXXXX", "XXXXXX", "XXXXXX" ) ;
    $db = mysql_select_db( "XXXXXXX" ) ;
....//Enregistrement dans la bdd//


Le nom de l'image est bien enregistrée en bdd mais j'ai l'erreur et pas d'uload !

Merci de votre aide Smiley smile
@plus
Zed1
Modifié par Zed1 (29 Jan 2014 - 17:00)
Salut,

j'ai pas bien saisi pourquoi tu utilise la fonction copy. Tu l'upload d'abord dans un répertoire temporaire puis tu la copy ensuite dans le bon dossier ?
Ou c'est pour upload ? Parce que dans la doc ( http://php.net/manual/fr/features.file-upload.post-method.php) ils ont l'air d'utiliser la fonction move_uploaded_file , pas copy

Ah et au passage, il faudra penser à s'assurer qu'ils ajoutent bien une image en vérifiant le type des données uploader.