2010-05-24 7 views
8

Tengo una aplicación SL3 que necesita para poder pasar una imagen al servidor, y luego el servidor generará un archivo PDF con la imagen y se lo mostrará al usuario.¿La mejor manera de pasar imágenes al servidor?

lo que ya tiene en su lugar son los siguientes:

(1) El código para convertir una imagen de matriz de bytes (2) El código para generar el archivo PDF con la imagen

El principal problema que estoy corriendo en es la siguiente:

con el fin de eludir el bloqueador de pop-up, que es un requisito para mi aplicación, estoy usando el siguiente código:

var button = new NavigationButton(); 

button.NavigateUri = new Uri("http://localhost:3616/PrintReport.aspx?ReportIndex=11&ActionType=Get&ReportIdentifier=" + reportIdentifier.ToString() + ""); 

button.TargetName = "_blank"; 

button.PerformClick(); 

Inicialmente, pasaba la imagen a un servicio web WCF (como una matriz de bytes), y luego "navegaba" a la página ASP.NET que mostraría el informe. Sin embargo, si hago esto, entonces no puedo usar mi clase HyperlinkButton personalizada, y ciertos navegadores, incluido Safari, bloquearán la apertura de una nueva ventana. Por lo tanto, parece que la única opción es usar la clase HyperlinkButton.

Lo que necesito hacer es pasar de alguna manera la imagen, como una matriz de bytes u otro tipo de datos, al servidor, de modo que pueda almacenar temporalmente la imagen, incluso si está en una variable de servidor , y luego recuperarlo inmediatamente cuando navego a la página PrintReport.aspx.

Si subo la imagen a un formulario ASP.NET y luego uso la clase HyperlinkButton para navegar a la página PrintReport, no funciona, ya que la aplicación navega a la página PrintReport antes de que el sistema haya terminado de cargar la imagen . No puedo pasarlo a un servicio web, ya que eso requeriría que navegue a la página PrintReport.aspx en el código de devolución de llamada del método web al que le estaría pasando la imagen, y el HyperlinkButton no permitirá eso, basado en las reglas de seguridad.

Cualquier ayuda o idea sería apreciada.

Gracias.

Chris

Respuesta

1

Is suena como su problema es menos que ver con la carga de imágenes, y más que ver con el uso de un solo clic para cargar y navegar a la página se muestra en el informe, si ese es el caso, entonces el manejo de la carga de la imagen en la página de informes podría ser el camino a seguir.

Upload files with HTTPWebrequest (multipart/form-data)

muestra cómo subir a una página aspx estándar

En cuanto a conseguir el enfoque de servicio web de trabajo, yo diría que la pieza del rompecabezas que se está perdiendo aquí es el modo de compatibilidad WCF ASP.

Esto le permite acceder al httpcontext en un servicio wcf. La captura, por supuesto, es que se está acoplando a su servicio ASP ....

Echa un vistazo aquí http://blogs.msdn.com/wenlong/archive/2006/01/23/516041.aspx para más detalles sobre el modo de compatibilidad ASP.

Su proceso se convierte en:

Subir a WEBSERVICE -> añadir a almacenar en caché

Vaya a la página -> retreive de caché

esperanza una de estas sugerencias ayuda

si no, ¡regresa a mi!

+0

Su comprensión es correcta. Si subo a un servicio web, el enfoque lógico sería navegar a la página que muestra el informe una vez que se completa la carga de los datos de la imagen. No puede usar el método de navegación HyperlinkButton desde un método de devolución de llamada, etc. Algo relacionado con las medidas de seguridad en Silverlight. Por lo tanto, todavía estoy atascado tratando de averiguar cómo, con un clic, para cargar los datos de imagen Y usando HyperlinkButton, abra una nueva ventana y busque otra página. – Chris

+0

K, voy a buscar en el espacio de nombres de AutomationPeers ... Esto le permite simular la acción del usuario (de nuevo, la seguridad puede significar que no hay un botón de automatización para el hipervínculo) ... Parece que tendrá que hacer algo elegante en el servidor, no permita que la página de informes se visualice hasta que la imagen esté cargada por completo ... Estoy trabajando en este momento y no tengo un desarrollador de Silverlight, pero cuando llegue a casa le daré una oportunidad y dejaré que funcione. tu sabes. – stevenrcfox

Cuestiones relacionadas