2010-12-09 8 views
3

Je crée un serveur de feuille de calcul Excel et le télécharge au client via un frontal Silverlight. Il est démarré par l'utilisateur en cliquant sur un bouton et étant présenté avec un SaveFileDialog. Une fois que l'utilisateur a entré un nom de fichier, silverlight lance un appel asynchrone à un service Web et, une fois terminé, renvoie un tableau d'octets qui est écrit là où l'utilisateur a demandé de le sauvegarder. Tout cela fonctionne très bien. Comment puis-je automatiquement ouvrir ce fichier sur le PC du client?Ouvrir automatiquement le fichier après le téléchargement dans Silverlight 4

Répondre

2

Vous n'avez pas ou COM Interop

Le 'standard' façon de le faire en C# est «Process.Start (chemin). Ceci n'est pas autorisé dans Silverlight pour de bonnes raisons de sécurité sans rapport avec votre scénario.

En théorie, vous pouvez utiliser COM Interop pour ouvrir un document à condition que votre application Silverlight 4 exécute «Out of Browser» ou que votre application Silveright 5 (bêta) dispose des nouvelles autorisations avancées. Le problème ici est que vous ne récupérez pas le chemin du fichier depuis SaveFileDialog, vous ne saurez donc pas quel chemin passer à la commande COM Interop Open. Vous pourriez être en mesure de « faire hacky avec elle » (par exemple, une recherche basée sur le nom du fichier et l'horodatage de création) ...

Référence http://www.itwriting.com/blog/2159-silverlight-4-with-com-can-do-anything-on-windows.html http://justinangel.net/CuttingEdgeSilverlight4ComFeatures

+0

Hmmmm I voir. J'ai juste supposé que j'aurais le chemin parce que j'ai le savefiledialog, mais en mode debug je peux voir qu'il n'y a aucun chemin. Ne pas manquer de navigateur non plus. Je suppose que du point de vue de la sécurité, c'est logique, mais quel moyen d'ennuyer un client: en laissant de côté quelque chose de si simple (en théorie) et convivial. Cela et le foutu manque de pouvoir définir un nom de fichier par défaut dans le savefiledialog ... – JumpingJezza

Questions connexes