none
Mostrar imagen en control image de asp.net? RRS feed

  • Pregunta

  • Almaceno las imagenes con mi control upload en una carpeta y la ruta de esta imagen la almaceno en una tabla de mi base de datos, el nombre del campo donde almaceno se llama rutaArchi.

    Mi pregunta es como puedo mostrar la imagen en mi control image despues de haberla guardado en mi carpeta y la ruta en la bd.?

    sábado, 9 de mayo de 2015 4:39

Respuestas

  • Aquí tienes un ejemplo de lo que buscas [...]

    Discrepo de Asier. El ejemplo que indica no concuerda con lo que buscas. Por el contrario, describe una técnica diferente para guardar imágenes, en la que el binario de la imagen se guarda dentro de la base de datos.

    En tu caso, has mencionado que la imagen está en una carpeta en disco, y lo que contiene la base de datos es la ruta de la imagen. Siendo así las cosas, el procedimiento a aplicar es diferente.

    Lo primero que hay que saber es si la carpeta que contiene los archivos está publicada en web o no, es decir, si es una subcarpeta por debajo de tu sitio web, o está fuera del mismo en el sistema de archivos. En el primer caso, extrae de la base de datos la ruta (que presumo que es una ruta física indicando la carpeta en disco) y pásala a través de Server.MapPath para obtener la ruta "web". El resultado asígnaselo a la propiedad ImageUrl de tu control.

    Pero en el segundo caso es más complicado. Tendrás que añadir código que lea el binario de disco y luego lo sirva a la página. Aquí sí que te puedes inspirar en el artículo que enlaza Asier. Fíjate en el código del Generic Handler, y donde indica el código que lee la imagen desde el registro a un array de bytes, cámbialo por una instrucción que cargue el array de bytes desde el archivo en disco, usando (por ejemplo) System.IO.Bytes.ReadAllBytes y pasándole la ruta que guardaste en base de datos. Finalmente, la Url de dicho handler sería la que asignarías al ImageUrl del control.

    • Marcado como respuesta fredsale sábado, 9 de mayo de 2015 16:45
    sábado, 9 de mayo de 2015 5:14

Todas las respuestas

  • Aquí tienes un ejemplo de lo que buscas [...]

    Discrepo de Asier. El ejemplo que indica no concuerda con lo que buscas. Por el contrario, describe una técnica diferente para guardar imágenes, en la que el binario de la imagen se guarda dentro de la base de datos.

    En tu caso, has mencionado que la imagen está en una carpeta en disco, y lo que contiene la base de datos es la ruta de la imagen. Siendo así las cosas, el procedimiento a aplicar es diferente.

    Lo primero que hay que saber es si la carpeta que contiene los archivos está publicada en web o no, es decir, si es una subcarpeta por debajo de tu sitio web, o está fuera del mismo en el sistema de archivos. En el primer caso, extrae de la base de datos la ruta (que presumo que es una ruta física indicando la carpeta en disco) y pásala a través de Server.MapPath para obtener la ruta "web". El resultado asígnaselo a la propiedad ImageUrl de tu control.

    Pero en el segundo caso es más complicado. Tendrás que añadir código que lea el binario de disco y luego lo sirva a la página. Aquí sí que te puedes inspirar en el artículo que enlaza Asier. Fíjate en el código del Generic Handler, y donde indica el código que lee la imagen desde el registro a un array de bytes, cámbialo por una instrucción que cargue el array de bytes desde el archivo en disco, usando (por ejemplo) System.IO.Bytes.ReadAllBytes y pasándole la ruta que guardaste en base de datos. Finalmente, la Url de dicho handler sería la que asignarías al ImageUrl del control.

    • Marcado como respuesta fredsale sábado, 9 de mayo de 2015 16:45
    sábado, 9 de mayo de 2015 5:14
  • hola

    si la idea es persistir la referencia a la imagen en la db evalua usar File Stream

    How Do I: Use SQL File Stream

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    sábado, 9 de mayo de 2015 12:04