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 d'un fichier image


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 56
    Points : 46
    Points
    46
    Par défaut [Upload] Upload d'un fichier image
    Bonjour,

    J'ai un formulaire qui permet d'uploader une image, qui fonctionne bien.

    Par contre j'ai juste un probleme, c'est quand soit la taille du fichier ou soit la taille de l'image est trop importante mon if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) me retourne false et du coup mon fichier ne passe pas en upload.

    De ce fait, j'ai récuperer un bout de code qui me permet de redimensionner l'image mais cela ne fonctionne toujours pas.
    Je suis chez Free (en attendant de finir mon site) est-ce-que c'est Free qui me bloque a partir d'une certaine taille ?

    Je vous met le code au niveau de mon if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier))


    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
     
    if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         { 
    					//calcul et redimension
                        //*********************
                        $fichierSource  = $dossier ;
                        $fichierSource .= "/";
                        $fichierSource .= $fichier;  
                        $fichierSource  = $fichierSource;
                        //hauteur / largeur 
                        $rapport = $infos_img[1] / $infos_img[0];
                        //Dimension de sortie
                        $hauteurDestination = $largeurDestination * $rapport; 
     
    					 //Réaloue la mémoire dont le serveur à besoin
                           //*******************************************
                           $memoryNeeded = round(($infos_img[0] * $infos_img[1] * $infos_img['bits'] * $infos_img['channels'] / 8 + Pow(2, 16)) * 1.65);
                           $mem_in_use= memory_get_usage();
                           //echo "Mémoire utilisée : $memoryNeeded contre $mem_in_use<br><br>";
                           $test = (integer) ini_get('memory_limit') + ceil(((memory_get_usage() + $memoryNeeded) - (integer) ini_get('memory_limit') * pow(1024, 2)) / pow(1024, 2)) + 1;            
                           //solution calculée
                           if(function_exists('memory_get_usage') && memory_get_usage() + $memoryNeeded > (integer) ini_get('memory_limit') * pow(1024, 2))               
                               ini_set('memory_limit', (integer) ini_get('memory_limit') + ceil(((memory_get_usage() + $memoryNeeded) - (integer) ini_get('memory_limit') * pow(1024, 2)) / pow(1024, 2)) + 2 . 'M');
     
    					//Création de l'image
                        //*******************
                        $source = imagecreatefromjpeg($fichierSource); 
     
                        $largeurSource = imagesx($source); 
                        $hauteurSource = imagesy($source);
     
                        if($largeurSource > $largeurDestination){
                           $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination)      
                                or die ("Erreur lors de la création de l'image");  
                        }
                        else{  
                           $im = ImageCreateTrueColor ($infos_img[0], $infos_img[1])
                                or die ("Erreur lors de la création de l'image");
                           $largeurDestination = $infos_img[0];
                           $hauteurDestination = $infos_img[1];     
                        }
    					 //Redimentionnement
                        //***************** 
                        ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);                                                                                    
     
                        //Création du fichier de sortie
                        //*****************************
                        $fh=fopen($fichierSource,'w');
                        fclose($fh);
                        ImageJpeg ($im,$fichierSource,$quality);
                        $size_file = filesize($fichierSource);
     
    					  //Affiche le détail de l'image
                        echo '<u>Détails de l\'image finale sur le serveur</u><br>'; 
                        echo '<b>Fichier :</b> '  , $fichier, '<br />'; 
                        echo '<b>Taille :</b> '   , $size_file, ' Octets<br />';
                        echo '<b>Qualité :</b> '  , $quality, ' %<br />'; 
                        echo '<b>Largeur :</b> '  , $largeurDestination, ' px<br />'; 
                        echo '<b>Hauteur :</b> '  , $hauteurDestination, ' px<br />';
                        echo '<b>Itération de compression :</b> ', $iteration, ' x <br />'; 
                        echo '<hr />'; 
     
     
     echo 'votre annonce a bien été enregistrée';
         }
         else //Sinon (la fonction renvoie FALSE).
         {
              echo 'Echec de l\'upload !';
         }
    Voila si vous pouvez m'aider ca serais cool Merci

  2. #2
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Par défaut tu dois être limité à 2Mo.
    A toi donc de vérifier avant l'envoi des images...

    Pour rééchantilloner l'image tu dois d'abord l'avoir sur le serveur ce qui ne peut être le cas...

    Le seul moyen c'est que l'utilisateur rééchantillone lui même son image.

  3. #3
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 56
    Points : 46
    Points
    46
    Par défaut
    OK merci.
    Des que mon site est opérationnel je vais bien sur le mettre sur un autre hébergeur que Free, j'ai lu que ovh est pas mal mais combien prend-t-il en upload ?
    Sinon vous me conseillez quoi comme hébergeur en sachant que niveau images et bdd ca vas vite se remplir.

  4. #4
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Le plus simple est que tu heberges ton site sur un de tes propres ordinateurs ainsi tu es libre de configurer le fichier ini de php et le fichier conf d'apache comme tu le souhaites...

  5. #5
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    On ne peut héberger soit même son site pour des raisons évidentes de bande passante, bref il est très probable que pour ton cas, il faille prendre un serveur dédié...
    A moins que tu ne puisses forcer le php ini avec des directives htaccess, mais tout dépend de l'hébergeur...

  6. #6
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Tout dépend de l'audience de son site...
    Le fichier .htaccess concerne apache, je doute que tu puisses modifier le fichier ini de PHP à partir de là.

  7. #7
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Evidemment que l'on peut changer les directives... tout dépend de l'hébergeur comme je l'ai dit.

    http://www.php.net/manual/fr/configuration.changes.php

  8. #8
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Autant pour moi

  9. #9
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 56
    Points : 46
    Points
    46
    Par défaut
    Evidemment que l'on peut changer les directives... tout dépend de l'hébergeur comme je l'ai dit.
    Ok je regarderais ca quand j'aurais mon nouvel hebergeur

    On ne peut héberger soit même son site pour des raisons évidentes de bande passante, bref il est très probable que pour ton cas, il faille prendre un serveur dédié...
    Oui je pense que une fois mon site référencé je devrais avoir pas mal de monde (enfin j'espere )

    En tout cas merci pour les renseignements

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Upload] Upload d'un gros fichier + barre de progression
    Par Night_owl dans le forum Langage
    Réponses: 4
    Dernier message: 27/03/2008, 15h14
  2. [Upload] Upload de beaucoup de fichier sur 1&1
    Par stilobique dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2007, 13h01
  3. Réponses: 2
    Dernier message: 22/05/2006, 00h07
  4. [Upload] upload de fichier images
    Par omlip dans le forum Langage
    Réponses: 2
    Dernier message: 03/01/2006, 23h13
  5. [Upload] probleme de récupération de fichier image
    Par BernardT dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2005, 01h12

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