Tengo imágenes almacenadas en mi base de datos en FILESTREAM y estoy tratando de averiguar cuál es la mejor solución para que esa imagen vuelva a aparecer en un navegador web.¿Cuál es la forma más rápida de transmitir una imagen de FILESTREAM en SQL a un navegador?
Si yo era la gestión de los archivos del sistema de archivos a mí mismo, la forma más rápida simplemente sería:
Response.TransmitFile(pathToFile);
Esto no quiere cargar el archivo en la memoria antes de transmitirlo al cliente (a mi entender) y como tal es lindo y rápido.
Actualmente estoy usando Linq a SQL para obtener el FILESTREAM. Esto proporciona el FILESTREAM como un objeto binario.
hasta ahora tienen esta forma bastante feo de hacerlo:
Response.WriteBinary(fileStreamBinary.ToArray());
voy a estar mejor sin molestarse con el LINQ to SQL y hacer las cosas de forma más directa?
Estoy empezando a preguntarme por qué me molesté con FILESTREAM en primer lugar y no me limité a administrar los archivos yo mismo. ¡Estoy seguro de que había una razón para ello sin usar la palabra "carro de la banda"!
Hmmm tal vez estamos hablando de diferentes tipos de objetos binarios - Linq devuelve un objeto System.Data.Linq.Binary que no tiene un método Read() :( – joshcomley
Lo siento, no entendí la muestra de código y pensé que fileStreamBinary era un stream ... No estoy familiarizado con System.Data.Linq.Binary, pero parece que está buscando todo el búfer de una vez, por lo que no puede evitar cargarlo en la memoria. Así que me temo que el código que encuentra "feo" es la única forma ... –
Parece que tendré que eludir a Linq cuando uso FILESTREAM en ese momento. Parece una tontería ya que el objetivo de FILESTREAM era permitir la transmisión directa súper rápida desde el disco! – joshcomley