9
votes

Comment générer un fichier à télécharger dans une extension Google Chrome?

Je veux générer un fichier CSV à la suite de certaines interactions utilisateur, puis inviter l'utilisateur à le télécharger. Comment puis-je faire ça?

Je ne pense pas que ce soit possible en JS droit, mais peut-être que Chrome me donne des privilèges élevés?


2 commentaires

J'ai fait cela dans ASP.NET. Quelles technologies utilisez-vous?


@Jon: Les extensions chromées sont écrites dans JS ... Ne pensez pas avoir d'autres options.


3 Réponses :


1
votes

chrome ne fournit aucune aide avec cela, mais je pense que vous devriez pouvoir déclencher une boîte de dialogue Enregistrer des fichiers à l'aide de Téléchargée bibliothèque JS qui utilise un composant flash dans les coulisses.


1 commentaires

Semble écraser Firefox pour moi quand j'essaie la démo. Chrome ne s'écrase pas si ... Alors, je suppose que je peux vivre avec ça.



5
votes

Vous pouvez maintenant utiliser HTML5 API de fichier pour télécharger un fichier. Il est toujours en développement, mais vous pouvez utiliser un blobbuilder et rediriger votre utilisation pour télécharger ce fichier: xxx

Pour plus d'informations sur l'API de fichier, HTML5Rocks a un excellent tutoriel:

http://www.html5rocks.com/tatudials/file/filesystem/


5 commentaires

Oui, en chrome 10, ils l'ont changé pour être "window.webkiturl.createObjecturl". J'ai édité ma réponse pour refléter cela. Le seul problème avec cette approche (sera résolu bientôt) est que vous ne pouvez pas contrôler le nom de fichier. Essayez-le dans votre inspecteur.


"Non autorisé à charger la ressource locale: Blob: NULL / 6B2C341A-AD40-48B2-9755-1B7134832D39". Je peux copier cela dans ma barre d'adresse et télécharger le fichier, mais pourquoi le chrome ne le permettra pas?


Pour le développement, essayez d'ajouter l'argument de ligne de commande suivant à Chrome: - Autoriser-fichier-accès-gort-fichiers


@MoHammed: Ouais, ça marche. Très proche d'être utilisable ... mais je pense avoir besoin d'une boîte de dialogue Enregistrer.


À ce stade, vous ne pouvez pas avoir de boîte de dialogue Sauvegarder en tant que boîte de dialogue. Peut-être que vous pouvez l'imiter et demander à l'utilisateur de vérifier leur répertoire de téléchargement.



4
votes

Je devais faire exactement le même fichier récemment - générer un fichier et faire appel à son téléchargement en extension de Chrome. Ici, vous êtes un extrait de code qui fait cela, en utilisant ES6 et les méthodes recommandées: xxx pré>

Vous devez également déclarer un privilège approprié dans manifeste.json code>: P >

"permissions" : ["downloads"]


0 commentaires