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 :

[Upload] Upload fichier [nouveau script]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 57
    Par défaut [Upload] Upload fichier [nouveau script]
    Bonjour,

    Je souhaiterais uploader un image dans un dossier. Il existe beaucoup de docs sur ce forum, mais aucun ne répond clairement à ma question, et après avoir tout essayé, je ne comprends plus rien à ce qu'il se passe ...

    J'ai donc mon formulaire : newref.php
    Code : 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
    <FORM method="post" enctype="multipart/form-data" action="createref.php">
    [...]
    	<FIELDSET align="center" width="100%">
    	<legend class="titel">Image du produit</legend>
    	<BR>
    	<TABLE align="right" width="100%" class="white" cellspacing="10px">
    		<TR>
    			<INPUT type="hidden" name="MAX_FILE_SIZE" value="10000000" />
    		</TR>
    		<TR>
    			<TD style="comm">Fichier image produit :</TD>
    			<TD><INPUT type="file" name="image" size="20" /></TD>
    		</TR>
    	</TABLE>
    	</FIELDSET>
     
    	<CENTER><INPUT type="submit" value="Cr&eacute;er la r&eacute;f."/> </CENTER></FORM>
     
    </body>
    </html>
    Et mon fichier createref.php :
    Code : 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
    <?php [...]
            $upfile=$HTTP_POST_FILES["image"]["tmp_name"];
      	echo $upfile; echo '<br />';
    	$file=$HTTP_POST_FILES["image"]["name"];
      	echo $file; echo '<br />';
    	$taille=$HTTP_POST_FILES["image"]["size"];
      	echo $taille; echo '<br />';
     
    	$repository="../prisme/type/marque/"; 
    	echo $repository; echo '<br />';
     
        if (is_uploaded_file($upfile)) {
            $extension = substr($file, strrpos($file, "."));
    		echo $extension; echo '<br />';
            $chemin_image = $marque."/".$ref.$extension;
    		echo $chemin_image ; echo '<br />';
            copy($file, $repository.$chemin_image);
    	}
     
    	else {echo "La mise à jour du fichier a échouée"; }
     
    ?>
    <script language="javascript">
    alert('Votre reference a bien ete creee !');
    window.close();
    </script>
    Voila le résultat de mes "echo" avec une image bidon de test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /tmp/php53G89G
    Nénuphars.jpg
    83794
    ../prisme/type/marque/
    .jpg
    ERCO/22165.000.jpg
    Donc pas d'erreur et pourtant aucun fichier sur le serveur, quelque soit le chemin utilisé (j'en ai essayé une dizaines différent, relatifs ou absolus, donc je pense pas que ca vienne de là).

    Je ne comprends pas du tout, le script ne retourne pas d'erreurs, le fichier est bien uploadé dans le rép temp d'Apache.

    Que j'utilise un copy ou un move_upload_file, j'ai le même résultat, alors que mes dossiers d'upload sont chmodés en 777....

    Auriez vous une idée ??? Pour info, cela arrive à la fois sur l'hébergeur 1&1 et aussi un serveur privé de ma société. Alors que cela marche sans problème en local ....

    Merci de votre aide précieuse[/quote]

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Si tu testes le retour de move_uploaded_file(), que dit-il ? As-tu essayé de voir ce que dit is_writable(), même si tu sais que ton rép est chmoddé ?

  3. #3
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    Déjà j'utilise la globale $_FILES, mais ca m'étonnerait que ca change qque chose...

    Sinon regarde une partie d'un de mes codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if((!empty($_FILES['image']['name'])) && (!empty($_FILES['image']['size'])))
    {
        if(is_uploaded_file($_FILES['image']['tmp_name']))
        {
            if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier))
                echo "Photo uploadée.";
        }
    }

  4. #4
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut Re: Upload fichier, désespoir.
    Citation Envoyé par Begood
    Alors que cela marche sans problème en local ....
    La réponse est alors dans la question. Si cela fonctionne en local mais pas sur ton serveur c'est clairement un problème de droits d'écritures.

    Comme déjà répondu, je passerais plutôt par move_uploaded_file() que par copy(), et par $_FILES que par $HTTP_POST_FILES, obsolète depuis longtemps (PHP 4.1.0).

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Eh bien quoi ? Cela ne fonctionne pas ? Ce n'est pas étonnant si tu lui donnes un répertoire de destination au lieu d'un chemin de destination...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 57
    Par défaut
    le is_writable me retourne false
    et le move_upload_file identique avec un joli false...

    je ne comprends pas puisque tout le répertoire est chmodé en 777....

  7. #7
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    le move_upload_file identique avec un joli false...
    sous windows, ça arrive... dixit www.php.net
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 57
    Par défaut
    non mais la c'est sur mes serveurs linux...

    faut il que chmode à partir d'apache ? mais dans ce cas, je ne vois pas du tout comment faire...

    quelqu'un peut m'expliquer comment chmodé mon répertoire autrement que par FTP ?

  9. #9
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    Vérifies que le chemin de destination soit bon

    essaie par exemple :

    /dossier
    /dossier
    /dossier/
    /dossier/fichier.ext
    dossier/fichier.ext

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 57
    Par défaut
    le chemin de destination est bon, ca j'en suis sur...

    le script marche en local sous easyphp et wamp (apache 1&2), sous windows...

    à mon avis, il s'agit d'une histoire de droits apache sur le serveur linux mais je ne m'y connais pas assez pour faire la modification du serveur...

    est-il possible de modifier ces droits par SSH et si oui comment ???

    merci de votre aide

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 57
    Par défaut
    Bon alors j'ai refait des tests car j'ai besoin de cette fonction d'upload rapidement...

    JE l'ai complétement modifié et j'aimerais avoir votre avis, puisque évidemment cela ne marche pas non plus ...

    Voici le code :
    Code : 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
    <?php
    //On paramétre la largeur, la hauteur et le poids maxi à ne pas dépasser.
    $width_maxi = "1024";
    $height_maxi = "1000";
    $taille_maxi ="7000000";//bytes
     
    $fichier = $_FILES['fichier']['name'];
    $taille  = $_FILES['fichier']['size'];
    $tmp     = $_FILES['fichier']['tmp_name'];
     
    $size_tmp = getimagesize($tmp);
     
    print_r($_FILES['fichier']);
     
    if ($fichier !="none"){
    	if (($taille < $taille_maxi)&&($size_tmp[0]<=$width_maxi)&&($size_tmp[1]<=$height_maxi))
    	{
    	$point=strrpos($fichier, ".");
     
    		if ($point)
    		$extension = substr ($fichier, $point);
    		else
    		$extension = "" ;
    		echo "<br>Extension = ".$extension."<br>";
     
    		$chemin="/home/[nom que je dois caché]/public_html/pro/logos/";
    		$destination = $chemin.$num_marque.$extension;
    		echo "<br>destination finale : ".$destination."<br>";
     
    		//test pour voir si le fichier arrive sur le rep temp apache
    		if (is_uploaded_file($_FILES["fichier"]["tmp_name"])) 
    		{echo "fichier envoyé<br>";}
     
    		var_dump(move_uploaded_file($tmp, $destination));
     
    		if (move_uploaded_file($tmp, $destination))
    		{
    		echo "Transfert du fichier réussi";
    		$size = $size_tmp;
    		echo "Largeur = ".$size[0]." pixels<br/>";
    		echo "Hauteur = ".$size[1]." pixels<br/>";
    		echo "Poids = ".$taille." octets<br/>";
    		require("miniature.php");
    		//mise a jour de l'extension en BD
    		$req="UPDATE `marque` SET `extension_marque` = '$extension' WHERE `num_marque` = '$num_marque'";
    		$exec=mysql_query($req) or die("erreur	: " . mysql_error());
    		unlink($tmp);
    		}		
     
    		else {
    		$taille_maxi_ko=$taille_maxi/1024;
    		echo "Transfert échoué<br/>";
    		echo "La largeur de l'image ne doit pas être supérieure à $width_maxi pixels.<br/>";
    		echo "La hauteur de l'image ne doit pas être supérieure à $height_maxi pixels.<br/>";
    		echo "Le fichier ne doit pas dépasser $taille_maxi_ko Ko.<br/>";
    		}
    	}
    	else
    	{
    	$taille_maxi_ko=$taille_maxi/1024;
    	echo "Le fichier est trop lourd : envoi refusé<br/>
    	Le fichier ne doit pas dépasser $taille_maxi_ko Ko.<br/>";
    	echo "La largeur de l'image ne doit pas être supérieure 
    	à $width_maxi pixels; elle fait ici $size_tmp[0] pixels<br/>";
    	echo "La hauteur de l'image ne doit pas être supérieure 
    	à $height_maxi pixels ; elle fait ici $size_tmp[1] pixels<br/>";
    	}
    }
    ?>
    Mais quand je l'éxecute, celui ci me retourne le résultat suivant :

    debug : num dimage:87
    Array ( [name] => 1.jpg [type] => image/jpeg [tmp_name] => /tmp/php0iiEuY [error] => 0 [size] => 6362 )
    Extension = .jpg

    destination finale : /home/[nom que je dois caché]/public_html/pro/logos/87.jpg
    fichier envoyé
    bool(true) Transfert échoué
    La largeur de l'image ne doit pas être supérieure à 1024 pixels.
    La hauteur de l'image ne doit pas être supérieure à 1000 pixels.
    Le fichier ne doit pas dépasser 6835.9375 Ko

    Ce qui me choque et que le move_uplaod_file me retourne TRUE mais que pour autant on ne rentre pas dans le IF puisque ce qui est affiché par la suite sont les divers écho du ELSE...

    Enfin voila cela devient de plus en plus mystérieux pour moi l'upload de fichier... Merci d'avance de votre aide !

Discussions similaires

  1. Download (OK) - Upload (?) de fichier par script VBS
    Par fabibi001 dans le forum VBScript
    Réponses: 0
    Dernier message: 06/02/2010, 21h13
  2. [Upload] Upload de fichier dans nouveau dossier
    Par ShaVo dans le forum Langage
    Réponses: 3
    Dernier message: 13/11/2006, 20h20
  3. [Upload] Upload de fichier avec un script PHP
    Par largolgd dans le forum Langage
    Réponses: 7
    Dernier message: 23/04/2006, 15h21
  4. [Upload] Upload de fichiers : sécurité
    Par genova dans le forum Langage
    Réponses: 16
    Dernier message: 04/01/2006, 21h22
  5. [Upload] upload de fichier images
    Par omlip dans le forum Langage
    Réponses: 2
    Dernier message: 03/01/2006, 23h13

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