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

Téléchargez Discussion :

Upload de gros fichiers par fragments (chunk)


Sujet :

Téléchargez

  1. #141
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Dans le dossier du module d'upload, l'exemple de formulaire concernant les informations exif des photos est le fichier UploadAjaxABCI_Redimensions_Exif.php qui appelle en ajax le fichier UploadAjaxABCI_Php_Load_Redimensions.php.

    Dans ce second fichier (destination de la requête ajax) tu peux voir vers le bas du code que les infos exif sont récupérées dans le tableau $tab_join :
    Code php : 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
    if($transfert)
    {
    	$tab_join = [];
            /* Avec la ligne ci-dessous, les informations exif - transmises par le formulaire dans la propriété 'join_fil' des objets représentant les fichiers sélectionnés, 
            cf. configuration javascript du fichier UploadAjaxABCI_Redimensions_Exif.php - sont récupérées dans le tableau $tab_join */
    	parse_str($up->getParam('join_file'),$tab_join); 
     
     
    	// Si l'on veut toutes les infos dans une chaine de caractères
    	$tab_temp = [];
    	foreach ($tab_join as $k => $v) $tab_temp[] = $k.' : '.$v;
     
    	// Chaine de caractère avec les informations séparées par un tiret
    	$exif = implode(' - ',$tab_temp);
     
            // Pour visualiser (durant le développement) le résultat dans le formulaire  je concatène cette chaine dans le status ok 
    	// $up->addStatusOk(' '.$exif);
     
     
            // Connexion bdd et enregistrement des informations nécessaires
            //...
    }

    Pour la démo je crée une chaine de caractère que l'on peut éventuellement renvoyer dans le formulaire avec $up->addStatusOk(' '.$exif); pour visualiser le résultat php, mais c'est juste pour vérification durant la phase de développement puisque dans l'exemple du formulaire ces infos ont déjà été écrites en javascript.

    La condition if($transfert) implique que le fichier a correctement été téléchargé et transféré dans son emplacement définitif. C'est le bon moment pour enregistrer les informations dont tu as besoin (nom/chemin du fichier, informations exif...) sous la forme que tu veux dans une base de donnée.

    Notes bien que les infos exif ne seront peut-être pas toujours disponibles car elles sont fournies uniquement dans les fichiers d'images provenant des appareils photo numériques. Si une photo a été traitée dans un logiciel photo par exemple, ces infos ne seront sans doute pas disponibles et dans ce cas $tab_join sera vide.

    Et voilà

  2. #142
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    super, merci beaucoup.
    en plus d'avoir un outil génial pur les upload, le suivi est rapide et précis que demander de mieux.
    Encore merci, j'avais vu et tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $up->addStatusOk(' '.$exif);
    mais je n'avais pas vu if ($tranfert)

  3. #143
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut valeurs Exif et APEX
    Bonjour

    Je ne sais pas si la question a déjà été soulevés en cherchant rapidement je n'ai pas trouvé de réponse à ma question.
    les données EXIF récupérées pour les ouvertures, vitesse d'obturation sont inscrites (nombres) mais pas dans le format dont lequel on l'habitude de les lire (1/60, f4).
    j'ai fait ça pour pouvoir récupérer dans une BDD les bonnes valeurs

    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    			// Si l'on veut toutes les infos dans une chaine de caractères
    			$tab_temp = [];
    			foreach ($tab_join as $k => $v){
     
    				// la variable temps a été nommé dans UploadAjaxABCI_Redimensions_Exif.php
    				if ($k=='temps'){
    					// valeurs "lisibles" des données EXIF
    					switch (round($v)) {
    						 case -5:$v='30';
    						 break;
    						 case -4:$v='15';
    						 break;
    						 case -3:$v='8';
    						 break;
    						 case -2:$v='4';
    						 break;
    						 case -1:$v='2';
    						 break;
    						 case 0:$v='1';
    						 break;
    						 case 1:$v='1/2';
    						 break;
    						 case 2:$v='1/4';
    						 break;
    						 case 3:$v='1/8';
    						 break;
    						 case 4:$v='1/15';
    						 break;
    						 case 5:$v='1/30';
    						 break;
    						 case 6:$v='1/60';
    						 break;
    						 case 7:$v='1/125';
    						 break;
    						 case 8:$v='1/250';
    						 break;
    						 case 9:$v='1/500';
    						 break;
    						 case 10:$v='1/1000';
    						 break;
    						 case 11:$v='1/2000';
    						 break;
    						 case 12:$v='1/4000';
    						 break;
    						 case 13:$v='1/8000';
    						 break;
    						 case 14:$v='1/16000';
    						 break;
    					}
    				}
     
    				if ($k=='ouverture'){
    					// valeurs "lisibles" des données EXIF
     
    					switch (round($v)) {
    						 case 0:$v='1';
    						 break;
    						 case 1:$v='1.4';
    						 break;
    						 case 2:$v='2';
    						 break;
    						 case 3:$v='2.8';
    						 break;
    						 case 4:$v='4';
    						 break;
    						 case 5:$v='5.6';
    						 break;
    						 case 6:$v='8';
    						 break;
    						 case 7:$v='11';
    						 break;
    						 case 8:$v='16';
    						 break;
    						 case 9:$v='22';
    						 break;
    						 case 10:$v='32';
    						 break;
     
    					}
    				}
    			$tab_temp[] = $k.' : '.$v;
    		}
    source des valeurs exif.org
    ça fonctionne mais je n'ai pas les valeurs intermédiaires de "diaph" exemple 4.5.
    si quelqu'un a une idée...

  4. #144
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    C'est vraiment un sujet particulier auquel je ne me suis pas intéressé. Mais ce n'est pas spécifique à ce module d'upload, à mon avis tu aurais plus de réponses dans des forums plus généralistes, javascript ou peut-être php ou encore dans les forums sur les APN...

  5. #145
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2013
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Lien
    Bonjour

    désolé du dérangement , je vous contact déjà pour vous remercie de ce que vous faites :

    J'ai regarde le fichier index fourni avec et la notice mais j'avoue que je debute dans le domaine

    J'aimerai rajouter un lien après que le fichier soit upload ( je suis leader d'une tem de jeux vidéos ) est cela nous permet de pouvoir partage des fichiers comme patch thèmes teamspeak ect... )

    J'utilise celui avec la vérification de fichier , je voudrais rajoute une ligne avec liens du fichier que les gens ont seulement a copier / coller pour partage sur notre forum a notre communautés

    Pouvez-vous me venir en aide Svp

    Cordialement

  6. #146
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Dans le fichier de destination de la requête ajax d'upload : Php_Upload/UploadAjaxABCI_Php_Load_Custom_VerifFileExist.php tu peux constater que l'on envoie un message dans le status du fichier avec $up->addStatusOk(SetMessages::setMess('UpAbRenomme').$nom_final); si le nom du fichier à été nettoyé et renommé :
    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
    if($transfert)
    {
    	//Si l'on doit indiquer les droits d'accès du fichier, par exemple 604, on pourrait faire
    	/*
    	if(!@chmod($destination_fichier,0604))
    	{
    	    $up->exitStatusErreur("Echec de la configuration des droits d'accès du fichier");
    	}
    	*/
     
    	// On souhaite afficher un message textuel si le nom du fichier a été nettoyé
    	$nom_final = pathinfo($destination_fichier, PATHINFO_FILENAME);
    	$extension_fichier = pathinfo($destination_fichier, PATHINFO_EXTENSION);
    	$nom_final = trim($extension_fichier) != '' ? $nom_final.'.'.$extension_fichier : $nom_final;
     
    	if ($nom_fichier_originel != $nom_final)
    	{
    		$up->addStatusOk(SetMessages::setMess('UpAbRenomme').$nom_final);
    	}				
    }
    Comme tu veux envoyer un message systématiquement pour indiquer l'adresse du fichier on supprimera la condition if ($nom_fichier_originel != $nom_final) et on enverra directement le chemin, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if($transfert)
    {
    	$nom_final = pathinfo($destination_fichier, PATHINFO_FILENAME);
    	$extension_fichier = pathinfo($destination_fichier, PATHINFO_EXTENSION);
    	$nom_final = trim($extension_fichier) != '' ? $nom_final.'.'.$extension_fichier : $nom_final;
     
    	$up->addStatusOk('Adresse fichier : http://www.nom_de_domaine/chemin_du_répertoire/'.$nom_final);		
    }
    Donc à toi de définir http://www.nom_de_domaine/chemin_du_répertoire/ avec les bonnes valeurs à la main.

    Remarque que pour plus de simplicité je n'ai pas utilisé la classe SetMessages qui sert à centraliser les messages (on aurait pu le faire en ajoutant une fonction dans la classe Php_Upload/Classes/Messages.php par exemple mais ce n'est pas indispensable). On peut écrire directement ce que l'on veut dans $up->addStatusOk();

    Sinon de manière plus générique tu pourrais avoir l'adresse relative du fichier par rapport à la racine du site en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if($transfert)
    {
    	// on utilise ici $destination_fichier qui a été définie plus haut dans le code			
    	$up->addStatusOk('Adresse fichier : '.str_replace($_SERVER['DOCUMENT_ROOT'],'',realpath($destination_fichier)));		
    }
    Ou encore l'adresse absolue en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if($transfert)
    {
            $http = empty($_SERVER['HTTPS'])? 'http://' : 'https://';
            $up->addStatusOk('Adresse fichier : '.$http.$_SERVER['SERVER_NAME'].str_replace($_SERVER['DOCUMENT_ROOT'],'',realpath($destination_fichier)));
    }


    Une remarque en passant : cet exemple d'upload que tu utilise, vérifie les fichiers existants dès la sélection des fichiers avec une première requête ajax qui utilise le fichier Php_Upload/UploadAjaxABCI_VerifFileExist.php puis réalise l'upload à la soumission du formulaire avec une seconde requête ajax qui utilise le fichier Php_Upload/UploadAjaxABCI_Php_Load_Custom_VerifFileExist.php. Le dossier de destination est indiqué dans les deux fichiers. Si donc tu modifie la valeur de $dossier_destination dans un de ces deux fichiers il faudra faire de même pour l'autre.


    Après dans l'idéal plutôt que l'utilisateur ait besoin de copier cette adresse à la main on pourrait imaginer ajouter un champ légende dans le formulaire qui indique le titre détaillé du fichier et l'associer au nom du fichier pour être enregistré automatiquement dans une bdd dès l'upload effectué (toujours dans la condition if($transfert) qui indique que le fichier a été correctement uploadé dans son emplacement définitif)... Mais bon si tu débute, chaque chose en son temps.

    P.S j'ai supprimé les commentaires sur le chmod dans mes derniers exemples, mais peut-être tu en auras besoin (dépend des serveurs).

    Et voilà

  7. #147
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2013
    Messages : 2
    Points : 4
    Points
    4
    Par défaut
    Super merci pour tes explications et ton aide tout fonctionne nickel

  8. #148
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    Citation Envoyé par rvm31 Voir le message
    Bonjour

    les données EXIF récupérées pour les ouvertures, vitesse d'obturation sont inscrites (nombres) mais pas dans le format dont lequel on l'habitude de les lire (1/60, f4).
    j'ai trouvé la solution si quelqu’un a besoin de la même chose ça donne ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // la variable temps ou ouverture a été nommé dans UploadAjaxABCI_Redimensions_Exif.php
    				if ($k=='temps'){
    					$v="1/".round(pow(2,$v));
    					$obt=$v;
    				}
     
    				if ($k=='ouverture'){
    					$focale=round(pow(1.4142,$v),1);
    				}

  9. #149
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut Informations Exif : retourner l'ouverture de diaphragme et la vitesse d'obturation avec des valeurs usuelles
    @rvm31 Merci pour le retour

  10. #150
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Hello !

    La version 6.5 est en ligne depuis quelques jours.

    Rien de révolutionnaire puisque j'ai simplement intégré la petite correction pour php 7.1+ détaillée dans ce message.

    Côté javascript j'ai testé la compatibilité avec la dernière version 3.2.1 de jQuery et c'est ok. Bien entendu, n'utilisez pas les versions "slim" de jQuery qui sont dépourvues des fonctionnalités Ajax.


  11. #151
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Nickel, merci de maintenir ce projet à niveau et de répondre à toutes les solicitations.


  12. #152
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    Bonjour

    Petite question j’enregistre les photos uploadées dans une BDD, ça fonctionne bien.
    mais je voudrais récupérer toutes les ID enregistrées pour pouvoir les utiliser dans une requête SQL après.
    Comment les récupérer en variable de session par exemple.
    pour récupérer l'id de l'enregistrement à chaque fois, j'ai fait ça dans UploadAjaxABCI_Php_Load_Redimensions.php.
    Mais je ne vois pas comment récupérer cette variable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $insert_photo->bindParam(':nomillustr', $name);
    			$insert_photo->bindParam(':nomf',$non_fichier);
    			$insert_photo->bindParam(':type',$extension_fichier);
    			$insert_photo->execute();
    			$insert_num= $bdd->lastInsertId();

  13. #153
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    1/ Côté formulaire, tu peux configurer le javascript avec l'option de configuration config.queryFormEnd que tu définis à true, soit normalement Up.config.queryFormEnd = true;. Cela a pour effet d'envoyer une requête additionnelle au serveur en fin de traitement du formulaire.

    Côté php, dans le fichier "UploadAjaxABCI_Php_Load_Redimensions.php", tu pourras récupérer cette dernière requête dans la condition if (count($up->UpAbci_formEnd) > 0) (que tu mettras en dehors de toute autre condition).

    Donc tu peux faire un truc comme ça :

    Code php : 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
    //...
     
    /*
    Pour éviter de multiplier les noms de variables de session j'utilise $_SESSION['UploadAjaxABCI'][$uniqid_form] définie auparavant côté client dans la page du formulaire.
    Cela a aussi comme avantage de lier la variable de session au formulaire.
    Je défini ici l'index "last_id". Attention de ne pas utiliser l'index "token" qui est réservé car utilisé pour définir le jeton du formulaire.
    */
    $_SESSION['UploadAjaxABCI'][$uniqid_form]['last_id'] = isset($_SESSION['UploadAjaxABCI'][$uniqid_form]['last_id']) ? $_SESSION['UploadAjaxABCI'][$uniqid_form]['last_id'] : [];
    $insert_photo->bindParam(':nomillustr', $name);
    			$insert_photo->bindParam(':nomf',$non_fichier);
    			$insert_photo->bindParam(':type',$extension_fichier);
    			$insert_photo->execute();
    			$_SESSION['UploadAjaxABCI'][$uniqid_form]['last_id'][] = $bdd->lastInsertId();
    //...
     
     
    // Vers le bas de page mais avant $up->exitReponseAjax() tu pourras récupérer le tableau d'id enregistrés dans $_SESSION['UploadAjaxABCI'][$uniqid_form]['last_id'] lors de la dernière requête témoignant de la fin de traitement du formulaire en faisant
     
    // $up->UpAbci_formEnd est un tableau qui est rempli uniquement lors de la dernière requête adressée au serveur si l'option de configuration javascript "config.queryFormEnd" a été définie à true. Il y a des infos sur les fichiers uploadés dans $up->UpAbci_formEnd mais ici tu n'en a pas besoin.
     
    if (count($up->UpAbci_formEnd) > 0)
    {
       $tableau_id =  isset($_SESSION['UploadAjaxABCI'][$uniqid_form]['last_id']) ? $_SESSION['UploadAjaxABCI'][$uniqid_form]['last_id'] : [];
     
      // tu fais ce que tu veux avec ce tableau
     
      // puis tu efface la variable de session
      if(isset($_SESSION['UploadAjaxABCI'][$uniqid_form]['last_id'])) unset($_SESSION['UploadAjaxABCI'][$uniqid_form]['last_id']);
    }
     
    $up->exitReponseAjax();

    L'inconvénient de cette méthode est que s'il y a une panne internet juste avant la dernière requête tu ne pourras pas récupérer ce tableau d'id.

    2/ Pour cette raison il est conseillé de faire tous les enregistrements nécessaires dans la bdd au fur et à mesure que chaque fichier est complet. Tu pourrais peut-être te servir d'un champ en bdd pour enregistrer/compléter ce tableau d'id pour chaque fichier complet, ce serait plus sécurisé.

    3/ Une autre solution est de tout enregistrer lors de la dernière requête additionnelle comme dans cet exemple. Les fichiers sont laissés dans le répertoire d'upload temporaire, et on les déplace dans leur emplacement définitif lors de cette dernière requête, en même temps que l'on enregistre leurs informations en bdd. En contre partie, toujours en cas de panne internet, si cette dernière requête n'arrive pas à destination, les fichiers uploadés se seront ni déplacés dans leur emplacement définitif ni répertoriés en bdd, l'ensemble de l'upload sera perdu et il faudra re télécharger les fichiers, mais la cohérence du récapitulatif enregistré en bdd sera préservée dans tous les cas.

    4/ On peut mixer les méthodes. Chaque fichier est déplacé vers son emplacement définitif et ses infos enregistrées en bdd dès qu'il est complet, ainsi qu'un témoin d'état du traitement du formulaire enregistré dans un champ de la table. La dernière requête de fin de traitement permettra de changer l'état du traitement du formulaire de chaque fichier enregistré en bdd, de sorte qu'en consultant la bdd on pourra savoir si le formulaire a été traité entièrement ou pas et agir en conséquence.

    5/ On pourrait aussi enregistrer, pour chaque fichier, un identifiant en bdd correspondant à l'identifiant du formulaire (ex: $uniqid_form) et ainsi récupérer les fichiers enregistrés lors de la session d'upload avec la clause "GROUP BY" de mysql.

    Bref on peut imaginer de multiples solutions, c'est la finalité et les priorités de ton script qui t'indiqueront la meilleure, indépendamment du fonctionnement de ce module d'upload qui permet de choisir celle que tu veux.

    Voilà

  14. #154
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 404
    Points : 241
    Points
    241
    Par défaut
    Ok merci encore pour l'aide apporté

  15. #155
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 16
    Points : 22
    Points
    22
    Par défaut selfie
    bonjour à tous

    tout d'abord je voulais dire que ce script Upload est vraiment bien.
    Mais j'ai quand même un soucis pour l'envoi de photo selfie !

    j'ai ce message: Echec du traitement. Erreur de création de l'image source.

    Toutes les autres photos prisent dans tous les sens depuis le smartphone s'enregistre bien.
    j'ai téléchargé l'image original prise de mon smartphone, je l'ai ouverte avec photoshop, et enregistré, sans rien y faire, et la photo c'est bien téléchargée avec le script !

    que peut il se passer ?


    Edit:
    j'ai copié tout le contenu zip dans un dossier sur le serveur et testé le fichier:
    UploadAjaxABCI_Redimensions_Exif.php =ne fonctionne pas
    UploadAjaxABCI_Redimensions.php=ne fonctionne pas
    UploadAjaxABCI_Basique.php = fonctionne

    Par contre il copie bien l'image source dans le dossier alors que le message indique le contraire !


    Merci

  16. #156
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    "Echec du traitement" signifie que le traitement en cours - dans ton cas il s'agit de redimensionnement d'image - ne fonctionne pas. Cela ne concerne pas l'upload de l'image originale (source) qui elle par définition n'a pas de traitement.

    Remarque que ce sont les scripts de redimensionnements qui ne fonctionnent pas. Et logiquement les scripts d'exemples de recadrage avant upload ne doivent pas fonctionner non plus. C'est très probablement que la bibliothèque GD n'est pas installée sur ton serveur or cette lib est nécessaire pour le traitement des images. Vérifies en faisant <?php phpinfo() ?> dans une page vierge et fait une recherche sur "gd".

    Normalement cette lib "gd" est installée par défaut mais pas toujours. Si non il faut l'installer ou alors tu ne pourras pas utiliser les fonctions de traitement sur les images car les scripts qui les utilisent te renverront un message d'erreur. Mais les scripts d'upload sans redimensionnement ou recadrage seront fonctionnels.

    Voilà l'explication, c'est ton serveur qui pose problème mais cela devrait pouvoir se résoudre car par exemple même les config php des pages perso de free supportent la lib gd...

  17. #157
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 16
    Points : 22
    Points
    22
    Par défaut
    j'ai bien compris ton message, mais alors pourquoi ça fonctionne dans toutes les position avec l'appareil photo arrière et
    pas une seule sur l'appareil photo frontale ?
    j'ai le redimensionnement sans aucun soucis avec l'apn arrière

    Le gd est bien installé:

    GD Support enabled
    GD Version bundled (2.1.0 compatible)
    FreeType Support enabled
    FreeType Linkage with freetype
    FreeType Version 2.4.2
    T1Lib Support enabled
    GIF Read Support enabled
    GIF Create Support enabled
    JPEG Support enabled
    libJPEG Version 6b
    PNG Support enabled
    libPNG Version 1.2.44
    WBMP Support enabled
    XPM Support enabled
    libXpm Version 30411
    XBM Support enabled
    Directive Local Value Master Value
    gd.jpeg_ignore_warning 0 0
    GD imaging Rasmus Lerdorf, Stig Bakken, Jim Winstead, Jouni Ahto, Ilia Alshanetsky, Pierre-Alain Joye, Marcus Boerge

    je comprend pas non plus, le fait d'ouvrir l'image qui déconne avec photoshop et de faire une simple modif, et l'image passe ensuite.
    j'ai un serveur ovh
    j'ai vidé tous les exif de la photo, au cas ou, mais non plus par là.

    tu peux peut être essaye de ton coté avec ton smartphone ?

  18. #158
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Bah fallait me dire cela dès le départ, tu disais que certains scripts ne fonctionnaient pas mais pas dans quelles circonstances (c'était pas clair).

    Si j'ai bien compris :
    1/ L'upload fonctionne dans tous les scripts.
    2/ Les redimensionnements fonctionnent sauf ceux réalisés sur les seules photos en provenance du frontal de ton smartphone.

    Sans doute à cause du format de ton fichier photo qui n'est pas reconnu par la bibliothèque gd comme étant correct. Le fait de l'ouvrir avec un logiciel photo qui est plus tolérant et ensuite de l'enregistrer permet de rétablir un format correct. Perso je n'ai pas de frontal sur mon portable mais ça fonctionne bien avec le principal et unique appareil photo de l'appareil, tout comme avec mon apn indépendant.

    Il faudrait en savoir un peu plus sur ces photos récalcitrantes. Peux-tu en faire afficher une dans ton prochain message avec l'outil d'insertion d'image (sans passer préalablement par un logiciel photo) ?

  19. #159
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 16
    Points : 22
    Points
    22
    Par défaut
    slt

    photo avec frontaleNom : avec_frontal.jpg
Affichages : 203
Taille : 1,09 Mo


    photo avec arrièreNom : avec arriere.jpg
Affichages : 374
Taille : 1,16 Mo

    voilà, merci à toi

  20. #160
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Oui donc dans les fonctions de redimensionnements des images (fichiers "RedimImage.php" et "CropRedim.php" inclus dans Php_Upload/Classes/) c'est la fonction imagecreatefromjpeg qui renvoie une erreur sur ta première image.

    Une piste ici
    pour peut-être résoudre ce problème. J'essaierai de voir ce que je peux en faire début de semaine prochaine. Si l'on est dans ce cas de figure, étant donné que ce n'est pas une erreur de script mais une erreur provoquée par une fonction native de php qui ne tolère pas les fichiers incorrectement formés (sans indication de fin de fichier), cela risque d'être un peu "coton" à débuguer et à généraliser.

+ Répondre à la discussion
Cette discussion est résolue.
Page 8 sur 15 PremièrePremière ... 456789101112 ... DernièreDernière

Discussions similaires

  1. Upload de fichiers par fragments (chunk) - Erreur d'ouverture du fichier temporaire
    Par Kakolio dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 10/07/2015, 18h27
  2. [SP-2007] Upload de gros fichiers par programme
    Par bigboomshakala dans le forum SharePoint
    Réponses: 10
    Dernier message: 31/03/2010, 09h55
  3. [Upload] Upload de GROS fichiers en php
    Par osscour dans le forum Langage
    Réponses: 21
    Dernier message: 26/05/2006, 14h13
  4. [Upload] Problème upload de gros fichiers avec Firefox
    Par the rootsm@n dans le forum Langage
    Réponses: 12
    Dernier message: 19/02/2006, 20h43
  5. [Upload] Upload de gros fichiers
    Par Rémiz dans le forum Langage
    Réponses: 8
    Dernier message: 07/01/2006, 11h44

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