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

JavaScript Discussion :

Sauvegarder une Url au format BLOB dans un fichier image


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2012
    Messages : 69
    Points : 60
    Points
    60
    Par défaut Sauvegarder une Url au format BLOB dans un fichier image
    Bonjour,

    Je suis en train de développer une méthode pour prévisualiser des images et les uploader après selection.

    Pour la preview :
    Je fais ça en jquery, en encodant les images en base64 : ça marche très bien

    Pour la partie upload :

    Voilà ce que j'ai aujourd'hui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    filesToSend.push(
                    {
                        'name'          : this.name,
                        'type'          : this.type,
                        'size'          : this.size,
                        'lastModified'  : this.lastModified,
                        'url'           : (URL || webkitURL).createObjectURL(this)
                    });
                    window.URL.revokeObjectURL(this);
    Au départ je passais mon data64 pour générer une image coté PHP (mais passer une image en base64 à notre serveur, c'est super lent et je pense déconseillé)
    Je suis donc parvenu à trouver la fonction createObjectURL() qui prend en paramètre mon File et qui me retourne une url du type : blob:http%3A//<mon_site>.fr/2b3a78be-b0ec-40a4-8f50-1577ba7642cb
    Si je copie cette url dans mon navigateur, l'image s'affiche très bien.

    Je comptais donc passer cette url à mon serveur PHP pour générer un fichier image de façon à enregistrer ce fichier sous la forme <mon_image>.jpg sur mon serveur.
    De la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $content = file_get_contents($url);
     
            $fp = fopen($destination . $photoID . '.' . $this->getExtension(), "w");
            fwrite($fp, $content);
            fclose($fp);
    Mais je ne parviens pas à créer un fichier image sur mon serveur à partir de cette url au format BLOB.
    J'ai tout simplement essayer un file_get_contents de mon url, mais cela ne fonctionne pas.

    Y a t-il une fàçon de générer une image à partir de cette BLOB url, ou alors il faut que j'utilise une autre méthode ? (Le but est de ne pas faire un formulaire et d'envoyer mes images avec un submit : je ne souhaite pas devoir recharger la page).

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu veux faire une preview de l'image avant son envoi (dans ce cas PHP n'intervient pas) ou bien tu veux afficher l'image qui vient d'être uploadé (dans ce cas il n'y pas besoin de ruser, l'image est sur le serveur) ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    tu confonds deux actions le preview et le upload

    lorsque ton utilisateur ajoute une image tu as un élément de type file
    avec celui-ci tu crées un ObjectUrl pour généré la preview

    lorsque tu dois envoyer les données au serveur ce n'est pas la preview que tu dois envoyer mes l'élément file

    A+JYT

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2012
    Messages : 69
    Points : 60
    Points
    60
    Par défaut Upload d'une image en preview sur mon serveur php
    Bonjour,

    Après quelques temps d'absence, je reviens sur ce problème que je n'arrive toujours pas à résoudre. Surement quelque chose de très simple, mais bon ...

    Donc pour résumer et pour récapituler :
    1 - J'arrive sur une page me permettant de faire un upload
    2 - Je clique sur le bouton pour ouvrir ma boite de dialogue qui me permet de choisir les images à uploader
    3 - En jQuery, je récupère mes images :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    jQuery("#toUpload").change(function()
        {
            var files = jQuery("#toUpload").prop("files");
        }
    4 - Avec l'objet FileReader(), je crée en jQuery une vignette aperçu de mon image.
    5 - Je selectionne mes images en jQuery (case a cocher ou ajout d'un attribut dans la balise img)

    Et, au point suivant, je voudrais, en cliquant sur un bouton <UPLOAD>, uploader mes images sur mon serveur.
    Une question, peut-etre tout bete, est comment récupérer mes images afin de les uploader sur le serveur ?


    Une solution que j'ai trouvée, mais qui, à mon avis, n'est pas optimisée, est :
    - Lorsque je crée les vignettes aperçu, avec l'objet FileReader, j'obtiens l'image au format base64 dans mon attribut src
    - Une fois mes vignettes sélectionnées, quand je clique sur <UPLOAD>, je récupère les images au format base64 pour les envoyer, par une requete Ajax, au serveur
    - Sur mon serveur, je convertis alors l'image base64 en JPG pour la stocker.

    Je pense que cette solution n'est pas très adaptée. En effet, dans ma requete Ajax, dans ce cas, mon image en base64 est passée dans le header (et une chaine en base64 peut etre très longue, ce qui est assez lent).

    Merci, encore une fois, de me donner vos avis et solutions à mon problème,

    Nikko

  5. #5
    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,

    Sinon il y a une solution toute prête ici avec des exemples fonctionnels. Tout ce que tu demande est déjà fait, et même beaucoup plus.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/08/2008, 13h52
  2. Réponses: 2
    Dernier message: 16/07/2008, 23h32
  3. Réponses: 4
    Dernier message: 30/05/2007, 11h50
  4. Insérer une date au format français dans un champ
    Par EpOnYmE187 dans le forum Installation
    Réponses: 2
    Dernier message: 14/06/2005, 13h09
  5. Réponses: 2
    Dernier message: 25/04/2005, 10h55

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