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 :

DnD upload d'image (input type "file")


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Par défaut DnD upload d'image (input type "file")
    Bonjour,
    je souhaiterai réaliser une interface web qui me permette d'uploader des image grace a un drag un drop, simplement.
    Biensur j'ai effectuer des recherches assez poussez d'exemples en tout genre.

    Mon idée est de me passer de jQuery, et de xhr, pour des raison qui me regarde et dont je ne debaterai pas ici

    Mais je bloc sur un probleme.
    Le code suivant, récupère un objet file lorsqu'un drag & drop est effectuer sur une petite div (#dropbox)
    rien de bien sorcier
    ensuite tout en js je créé une form, muni d'un input type file

    Mais à ma grande surprise, input type file se montre bien mystérieux .
    En effet assez naivement peut etre j'esperais qu'il me suffirai de placer mon objet récuperer précedement en value de mon input.
    avec quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    inputvar.setAttribute('value', file);
    mais l'input type file ne se comporte pas comme ça. Et je ne comprend pas comment input type file classique fonctionne pour transmettre un fichier et le récuperer en PHP avec la super global $_FILE.

    Bref si quelqu'un avait une idée, merci de m'éclairer.


    voir le code complet :

    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
    <script type="text/javascript">
    window.onload = function() {
     
    	var dropbox = document.getElementById("dropbox");
     
    	dropbox.addEventListener("dragenter", dragenter, false);
    	dropbox.addEventListener("dragover", dragover, false);
    	dropbox.addEventListener("drop", drop, false);
    	dropbox.addEventListener("drop", drop, false);
     
    	function dragenter(e) {
    	  e.stopPropagation();
    	  e.preventDefault();
    	}
     
    	function dragover(e) {
    	  e.stopPropagation();
    	  e.preventDefault();
     
    	  document.getElementById('dropbox').style.backgroundColor ='grey';
    	} 
     
    	function drop(e) {
    	document.getElementById('dropbox').style.backgroundColor ='white';
     
    	  e.stopPropagation();
    	  e.preventDefault();
     
    		var dt = e.dataTransfer;
    		var files = dt.files;
     
    		var form = document.createElement('form');
    		form.setAttribute('method', 'post');
    		form.setAttribute('action', 'upload.php');
    		form.setAttribute('enctype','multipart/form-data');
     
    		var inputvar = document.createElement('input');
    		inputvar.setAttribute('type', 'file');
    		inputvar.setAttribute('name', "my");
    		/// inputvar.setAttribute('value', files); <--??? c'est là que ce pose mon problème comment faire passer l'objet file à l'input type file
     
    		form.appendChild(inputvar);
    		document.body.appendChild(form);
    		form.submit();
    	}
    }
    </script>

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    si on pouvait modifier le value d'une input type file ça ne serait même plus une faille, mais ce serait un trou noir de sécurité !!!!!
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Par défaut la recherche continue
    je lis dans la documentation W3C qu'un input type file creer un objet UploadFile, accessible depuis le dom si on connait l' id de notre input.
    très bien, je modifie mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
    var inputvar = document.createElement('input');
    inputvar.setAttribute("type", "file");
    inputvar.setAttribute("name", "my");
    inputvar.setAttribute("id", "myInput");
     
    form.appendChild(inputvar);
    document.body.appendChild(form);
    document.getElementById("myInput").value = files[0];
    form.submit();
    et là, malheur. Ma console me retourne une erreur de sécurité
    POURQUOIIIII, on ne peut pas set the value of an input file

    n'y a t'il qu'un xhr qui puisse me sauver ????

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Dans quel but veux tu le modifier ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Par défaut
    Non bon, j'ai compris par moi même qu'il y avait une faille de sécurité.
    Je viens de passer ma journée a-à comprendre que ce n'etait pas possible comme ça, (meme si l'idée n'etait pas bete en soit).

    Tout les exemples que j'avais trouvé utilisait ajax, mais je ne suis pas vraiment familier d'ajax...
    bref je vais devoir m'y coller..

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    En réalité ce n'est plus une question de faille de sécurité.
    Ce n'est pas moins dangereux d'uploader un fichier en AJAX qu'en le mettant dans un formulaire HTML.

    C'est juste que ce n'est venu à l'idée de personne d'étendre l'API des formulaires pour qu'on puisse y ajouter un fichier obtenu par JavaScript. Ça complique les choses et ça sert à rien, puisqu'on peut faire la même chose en AJAX, que c'est une solution à bien plus de choses, et que ça existe déjà.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    uploader un fichier en ajax n'est pas possible non plus ... xmlhttprequest ne converse qu'en string...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. [Upload] Question sur <input type='file' />
    Par Sayrus dans le forum Langage
    Réponses: 7
    Dernier message: 19/04/2007, 10h39

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