2009-04-15 12 views
10

Necesito escribir una aplicación web que permita al cliente descargar un archivo desde el servidor, hasta ahora todo bien, pero el archivo debe estar codificado, por lo que necesito decodificarlo en el cliente y escribirlo en un archivo en la PC del cliente.¿Puedo escribir un archivo en la PC del cliente usando silverlight

¿Puedo hacer esto usando Silverlight? ¿y cómo?

Si no es posible, ¿hay otra forma de hacerlo? ¿Alguna sugerencia?

Gracias

Edit: Como se expone para Brian Genisio, lo que puedo pedir permiso expreso del usuario para guardar el archivo, por lo que creo que el abrir y guardar diálogos están bien para mi caso. Pero en caso de que eso no sea suficiente, ¿hay alguna forma de, con o sin interacción del usuario, guardar el archivo fuera del almacenamiento aislado, por ejemplo, emular una nueva descarga para el usuario?

Respuesta

8

En Silverlight 3.0, tendrá acceso a leer y escribir archivos a través del OpenFileDialog. En Silverlight 2.0, tiene acceso a Isolated Sotrage, que le permitirá guardar en un sandbox. Sin embargo, probablemente nunca tendrá acceso total al sistema de archivos sin el permiso del usuario.

3

Usted cannot do this por razones de seguridad:

aplicaciones basadas en Silverlight no utilizan el sistema de archivos del sistema operativo y están restringidos a usar almacenamiento aislado de persistir y acceder a los archivos , por lo que este espacio de nombres [System.IO] no proporciona ninguna funcionalidad adicional. Para obtener más información acerca de cómo aplicaciones basadas en Silverlight utilizan el almacenamiento aislado , consulte Isolated Storage.

Si es posible, es posible que desee cambiarlo de modo que el servidor haga la codificación y el archivo esté disponible para su descarga de manera tradicional.

Si está codificando para privacidad/seguridad, considere ofrecer la descarga solo en un protocolo seguro (HTTPS utilizando SSL).

0

Otra opción (no elegante, pero funciona) podría ser realizar un ping pong usando servicios:

  • obtener el archivo desde el servidor.
  • Realice la codificación/transformación que necesita en el lado del cliente.
  • Envíelo al servidor nuevamente usando un servicio WCF, guárdelo en sesión.
  • Llamar a un método de javascript desde SL que realizará una solicitud a un hacker HTTP personalizado.
  • Ese HTTP personalizado pondría el archivo que estaba en sesión como un archivo adjunto (la primera vez que aparece la desagradable barra de IE ... vas a descargar algo ...).

Mi caso es un poco más simple, en mi aplicación necesitaba exportar un Diagrama DB a JPEG y para exportarlo a un informe HTML, utilicé ese enfoque (ping pong :)).

Si quieres echar un vistazo:

http://www.dbschemaeditor.com

HTH Braulio

Cuestiones relacionadas