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 de plusieurs images mais une par une ?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 36
    Points
    36
    Par défaut upload de plusieurs images mais une par une ?
    Bonjour,
    Depuis des années j'utilise une fonction qui upload des images, et qui les redimensionne avec GD.
    avec 1 ,2,3 images avec une taille initiale de +/- 1 Mo il n'a pas trop de problemes, mais connaissant les limites du php.ini (taille du post, temps d'execution du script, memoire allouée etc...), et les ressources consommées par GD, j'invitais les utilisateurs a faire attention de ne pas charger des photos trop lourdes.
    Il se trouve que je suis un train de developper une newsletter selon un template qui necessite 6 images, et comme d'habitude je me prends la tête avec l'upload des photos pour que ce soit le + convivial pour l'utilisateur et hier soir, j'ai fait un test:
    j'upload une photo de 6 Mo aucun probleme.
    J'upload 6 photos de 500 ko,y'en a une ou deux qui passe, mais pas les autres ... (6x500Ko = +/- 3Mo soit la moitié ! et j'ai pas d'erreur, ou de warning)
    je lance l'upload de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if(isset($_POST['submit']))	{
     
    photo_upload($_FILES['photo1']);
    photo_upload($_FILES['photo2']);
    photo_upload($_FILES['photo3']);
    photo_upload($_FILES['photo4']);
    photo_upload($_FILES['photo5']);
    photo_upload($_FILES['photo6']);
     
    }
    En fait PHP envoie tout en une seule fois, je ne comprends toujours pas l'origine de mon étrange probleme (si quelqu'un sait ?) mais surtout j'aimerai bien savoir dans l'immediat si il y a un moyen de faire avec un seul submit un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(isset($_POST['submit']))	{
     
    photo_upload($_FILES['photo1']);
    wait_for_complete_upload($_FILES['photo1']);
    photo_upload($_FILES['photo2']);
    wait_for_complete_upload($_FILES['photo2']);
    photo_upload($_FILES['photo3']);
    wait_for_complete_upload($_FILES['photo3']);
    photo_upload($_FILES['photo4']);
    etc...
     
    }
    Quelqu'un peut'il m'aider ?
    merci d'avance
    ++

  2. #2
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Bonjour

    Pas de message d'erreur ... on va essayer d'en trouver ...

    As-tu essayer ceci?
    Une ressource pour toi 1
    Consulte aussi ceci pour t'aider a créer un code pour les messages d'erreurs
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    Bonjour,
    Merci pour ta reponse.
    Je ne te cacherai pas que j'avais desactivé la gestion de $_FILES['blabla]['error'] dans ma fonction il ya longtemps parceque ... ça ne me servais a rien
    ça ne m'a jamais permis de comprendre ce comportement pour le moins "etrange" qui est : plus je telecharge de fichiers => moins je peux uploader d'octets.
    Je viens de reactiver vite fait le truc et fait 3 essais
    1): un fichier de 7.1 Mo => aucun probleme
    2): 3 fichiers de 1.8 Mo => 2 premiers ok et une erreur 4 (aucun fichier telechargé) pour le 3ème
    3): 4 fichiers de respectivement: 492 ko, 600 ko, 1 Mo & 800 ko => 3 premiers Ok, le 4ème erreur 4 encore une fois
    a la limite j'aurais préféré avoir des erreurs de php ini, d'extension ou autres pour comprendre.
    un extrait de phpinfo() en php 5.4.4 chez 1&1 (mais la problematique est identique en 5,1.,5.2 ou 5.3 chez OVH avec des valeurs post_max size et memory limit plus élevées)
    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
     
    max_execution_time	50000	50000
    max_file_uploads	20	20
    max_input_nesting_level	64	64
    max_input_time	-1	-1
    max_input_vars	5000	5000
    memory_limit	90M	90M
    open_basedir	no value	no value
    output_buffering	0	0
    output_handler	no value	no value
    post_max_size	8M	8M
    precision	14	14
    realpath_cache_size	16K	16K
    realpath_cache_ttl	120	120
    register_argc_argv	On	On
    report_memleaks	On	On
    report_zend_debug	On	On
    ...
    unserialize_callback_func	no value	no value
    upload_max_filesize	40M	40M
    Je precise que j'ai fait 2 autre essai avec un fichier de 9.2 Mo qui ne c'est pas uploadé (c'est logique avec post_max_size à 8 Mo), mais pas eu de message d'erreur non plus meme en descendant la valeur de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="MAX_FILE_SIZE" value="8000000">
    ++

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    je viens "betement" de rajouter un return dans ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    if (is_uploaded_file($tmp_name)) { 
    		move_uploaded_file($tmp_name, $dossier . $photo);
    	  	$ok.$i = 'fileok';
    return $ok.$i;
    	  	}	else {	...	}
    et un
    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
     
    if(isset($_POST['submit']))	{
     
    photo_upload($_FILES['photo1'],1);
    	if(isset($ok1) && $ok1 == 'fileok')	{
     
    	photo_upload($_FILES['photo2'],2);
    	}
    	if(isset($ok2) && $ok2 === 'fileok')	{
     
    	photo_upload($_FILES['photo3'],3);
    	}
    	if(isset($ok3) && $ok3 === 'fileok')	{
     
    	photo_upload($_FILES['photo4'],'4');
    	}
    mais ça marche pas... (je m'y attendais )

    Il doit bien y avoir des solutions ? comment font les sites comme ImageVenue par exemple ? je viens d'essayer chez eux 7 images de 3Mo dans un seul formulaire ça passe comme une lettre a la poste ... J'en demande pas tant, mais 6 x 1Mo ça me conviendrait

    ++

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/12/2015, 01h51
  2. [RegExp] Détecter des combinaisons dans une chaine une par une
    Par vermine dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/06/2010, 13h22
  3. Réponses: 5
    Dernier message: 10/05/2008, 18h11
  4. Réponses: 2
    Dernier message: 10/05/2008, 17h53
  5. Réponses: 2
    Dernier message: 05/06/2006, 08h54

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