11
votes

Téléchargement de fichier HTML5 avec angularjs

J'essaie de se faire angullement de lire le contenu d'un fichier que l'utilisateur sélectionne via un contrôle. Même si l'angulaire n'a pas de directives pour les contrôles de téléchargement de fichiers, il devrait être facile de résoudre ce problème avec un appel à $ appliquer : xxx

Malheureusement, l'événement n'est jamais mis à la porte. C'est comme si le sélecteur est incapable de se référer à l'élément DOM correct: même si le sélecteur trouve l'élément, la liste des fichiers est toujours vide. Cela se produit également si je foule avec la console JS. L'inspecteur DOM dispose plutôt de la liste de fichiers entre ses propriétés.

Cela me rend fou, mais la seule façon dont je suis au travail pour travailler jusqu'à présent consiste à utiliser un gestionnaire d'événements en ligne qui attribue à une variable globale . Pourquoi le sélecteur JQuery renvoie-t-il un autre article? Existe-t-il une compilation de modèle Mumbo-Jumbo qui angulaire qui confond des sélecteurs?


0 commentaires

3 Réponses :


14
votes

Voici ce que je fais:

http://plnkr.co/edit/jpxscyrxosvxfznzeius ? p = aperçu xxx

modèle: xxx

Ce type de tâche, tu veux certainement faire Utilisation de la directive. Mais je pense que votre principale préoccupation est de savoir comment accéder au fichier sélectionné Les objets et mon exemple doivent clarifier cela.


4 commentaires

joli. J'ai fini par définir une fonction globale dans le contrôleur et l'appelant du gestionnaire d'événements en ligne. Depuis la portée de $ dans la fermeture extérieure, au moins je peux appliquer les modifications. La directive est définitivement une façon plus "angulaire" de le faire. Mais la question se trouve: pourquoi le sélecteur renvoie-t-il un élément d'entrée qui ressemble exactement à celui de l'utilisateur interagissant, mais ce n'est pas le cas?


mmmh cela ne fonctionne pas pour moi. Si j'exécute votre Plunkr, j'ai toujours des fichiers: {"0": {}} Est-ce que je fais quelque chose de mal?


@pomarc IIRC, il travaillait pour travailler ... mais il semble que les navigateurs modernes ne prennent pas en charge la limitation de l'objet de fichier. Vous devez accéder directement aux propriétés afin de leur montrer à votre vue.


Voici une fourchette d'exemple de Tosh qui fonctionne dans les navigateurs modernes. PLNKR.CO/EDIT/PELSWOPZKEEELEG3CRVR?P=PREVIEW



2
votes

Si vous recherchez le téléchargement de fichier avec angular, vous pouvez utiliser ce plugin

https://github.com/danialfarid/angular-file-upload << / p>

Il s'agit essentiellement d'une directive comme la réponse de Tosh qui prend soin des navigateurs non-HTML5 avec Fileapi Flash Polyfill et une fonction $ http.uploadfile pour télécharger le fichier réel via Ajax.


0 commentaires

1
votes

Ce site Utilise un service angulaire pour le téléchargement de fichier HTML5. Un moyen simple est de configurer un contrôleur qui appelle le service et met à jour l'interface utilisateur lorsque l'appel asynchrone est terminé.

Contrôleur: XXX

< Pré> xxx

modèle: xxx

Référence: Vous pouvez trouver le code source complet et la référence sur ce site.


0 commentaires