Visualice la imagen de la base de datos en ASP.net con C #

Sé que este tipo de pregunta se ha hecho muchas veces. Sin embargo, no logro mostrar una imagen de mi db en una página.

Probé el siguiente método.

protected void Page_Load(object sender, EventArgs e) { //Get the picture id by url //Query here byte[] picture = queryoutput; Response.ContentType = "image/jpeg"; Response.BinaryWrite(picture); } 

Enlace para obtener la imagen.

  

La etiqueta se encuentra entre las tags .

Cuando ejecuto este código y comprobé Firebug, simplemente dice ‘Error al cargar fiven URL’. También intenté poner el Respone.Con...(picture); formar parte de un método público y llamar a ese método con el byte var dado.

Soy bastante nuevo en asp.net, pero tengo algo más de experiencia en c #. Empiezo a odiar realmente asp.net … He estado luchando con esto durante aproximadamente 20 horas y he probado muchas opciones, pero ninguna funcionó.

Lo mejor sería si pudiera completar la imagen a través del archivo de la misma página. Me parece completamente ilógico llamar a otra página para cargar la imagen.

¿Alguien puede decirme qué estoy haciendo mal aquí?

Solución: se eliminó la referencia de página maestra de la directiva de página en la página que maneja la respuesta de imagen. También se eliminó todo lo demás excepto la directiva @page en el archivo aspx.

intente usar un archivo controlador (.ashx) ponga el código de su página_carga en esa mentira tan

 public void ProcessRequest (HttpContext context) { //Get the picture id by url //Query here byte[] picture = queryoutput; Response.ContentType = "images/jpeg"; Response.BinaryWrite(picture); } public bool IsReusable { get { return false; } } 

luego llame al archivo manejador y pase los elementos correctos de la cadena de consulta de la

esto debería funcionar

Hay un error en su referencia de ruta …

 ImageUrl="/~givememypicture.aspx?pic=3" 

debiera ser:

 ImageUrl="~/givememypicture.aspx?pic=3" 

~ es una abreviatura de “la raíz de la aplicación” y debe ir seguida de una barra inclinada para indicar que se trata de un directorio. Piense que es similar a otras anotaciones de taquigrafía de ruta, como . y ..

Asegúrese de llamar a Response.Flush (); y también Response.End (); y ver si eso hace el truco

Además, su tipo de contenido tiene un error de ortografía. No es “images / jpgeg” Creo que es “image / jpeg”

EDITAR: Sí, acabo de confirmar en Wikipedia que el tipo de contenido correcto es image / jpeg.

Hago esto todo el tiempo. Aquí hay un código de muestra:

Response.ContentType = “image / jpeg”; Response.BinaryWrite (bytes);

Eso es todo lo que hay. Si no funciona, es probable que algo esté mal con sus datos.

No se requiere una descarga. Tengo código de trabajo para este abrir en mi pantalla en este momento.

Sugeriría que intentes escribir ese búfer de datos en un archivo y ver si se abre como una imagen válida. Apuesto a que algo anda mal con esa información.

Además, es una buena idea habilitar el almacenamiento en caché del lado del navegador para su contenido dynamic. Aquí hay un GRAN enlace que muestra exactamente cómo hacerlo, lo que boostá mucho su rendimiento / escalabilidad.

http://edn.embarcadero.com/article/38123