Tema destacado: ¡Aprende hacking con práctica! - arZone, el wargame de elhacker.net
Autor
|
Tema: insertar imagenes en base de datos (Leído 2,795 veces)
|
xemnas
Desconectado
Mensajes: 74
|
hola a tod@s, alguien podría decirme como insertar una imagen en un insert into? he probado a poner la ruta donde tengo la imagen pero no me la coge. gracias 
|
|
|
|
|
En línea
|
|
|
|
fran800m
Desconectado
Mensajes: 139
|
Yo nunca lo he hecho, guardo la ruta y subo el fichero. Para subir la imagen supongo que tendrás que crear un flujo y tener en la tabla un campo binario o similar. Supongo que habrá opiniones a favor y en contra de hacerlo de una manera u otra, yo prefiero como lo hago ahora. Espero que alguien más te eche una mano, seguro que yo también aprendo algo nuevo  Un saludo,
|
|
|
|
|
En línea
|
|
|
|
|
seba123neo
|
no se en que lenguaje estas programando, pero es simplmenete insertar un array de bytes de la imagen (binario), para mysql por ejemplo se usa el campo BLOB y para SQL Server se usa el bynary (aunque este esta en desuso) y yo uso el varchar(max).
lo que tenes que hacer es desde programacion, cargar la imagen y convertirla a array de bytes, y grabas eso...luego para recuperar la imagen haces lo contrario, convertis los array de bytes a imagen.
yo lo uso en SQL Server donde pueden guardar imagenes de los productos, pero les doy para que acepte solo una imagen inferior a 50kb con motivo de que no se sobrecarge la base.
lo bueno de esto es que es mas portable, cuando haces backup las imagenes las tenes en la base de datos y no tenes que ir llevando las imagenes aparte y peor si son miles.
saludos.
|
|
|
|
|
En línea
|
Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo. Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
|
|
|
Novlucker
Ninja y
Ex-Staff
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
Más de lo mismo que han dicho antes ... ¿En que lenguaje intentas hacer el insert? ¿En que gestor de base de datos? En MSSQL desde TSQL por ejemplo lo puedes hacer con OPENROWSET, pero dudo que intentes hacerlo desde TSQL  Saludos
|
|
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD http://twitter.com/novlucker "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
|
El As del Club Paris
|
Es mejor solo guardar el path de la imagen en el server, si guardas la imagen en un campo binario vas a freir tu procesador...
|
|
|
|
|
En línea
|
sudo suck --mycock -o force
|
|
|
Novlucker
Ninja y
Ex-Staff
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
¿Para que sirven los campos binarios entonces?
|
|
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD http://twitter.com/novlucker "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
|
El As del Club Paris
|
Para lo que vos como programador los quieras usar, guardar tipos abstractos como objetos.
|
|
|
|
|
En línea
|
sudo suck --mycock -o force
|
|
|
Novlucker
Ninja y
Ex-Staff
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
Entre otras cosas, imágenes.
No se va a freír ningún procesador si guardas imágenes en una base de datos, esta claro que por una cuestión de performance no se conveniente guardar las imágenes estáticas de un sitio en una base de datos, pero por lo general es cuestión de gustos y dependerá de cada caso.
Saludos
|
|
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD http://twitter.com/novlucker "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
|
seba123neo
|
Entre otras cosas, imágenes.
No se va a freír ningún procesador si guardas imágenes en una base de datos, esta claro que por una cuestión de performance no se conveniente guardar las imágenes estáticas de un sitio en una base de datos, pero por lo general es cuestión de gustos y dependerá de cada caso.
Saludos
+1
|
|
|
|
|
En línea
|
Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo. Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
|
|
|
fran800m
Desconectado
Mensajes: 139
|
Permitidme una pregunta. Para reducir la transferencia desde servidor a cliente se suele usar directrices en .htaccess para marcar la caducidad de ficheros estáticos, como imágenes y otros, para que se tire de caché de navegador antes de enviar dichos ficheros desde servidor. Si creamos "al vuelo" las imágenes siempre se estaría realizando dicha transferencia, ¿no? Además, el solo hecho de afectar al rendimiento sería para pensárselo si la aplicación ya está en apuros a ese respecto, ¿no creéis? Yo no lo veo tanto cuestión de gustos como de necesidades concretas. Por cierto, buen rollo  que solo por disentir ya se me han echado encima. Sería bueno que comentáramos los pros y contras, a ser posible en base a experiencias concretas. Un saludo,
|
|
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Ex-Staff
Desconectado
Mensajes: 10.239
Yo que tu lo pienso dos veces
|
Es que con lo que se pregunta originalmente no alcanza para seguir con la discusión, faltan datos. Por ej. en mi caso en particular y hablando de desarrollar en ASP.NET, para atender los request de imágenes alojadas en el servidor se suele utilizar handlers (*.ashx), que son quienes se encargan de obtener los datos binarios y renderizarlos en el navegador, y ahí mismo se puede definir si la información es "cacheable" y por cuanto tiempo, con lo cual solo se hace la consulta en ese intervalo  Saludos
|
|
|
|
« Última modificación: 23 Noviembre 2011, 04:06 por Novlucker »
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD http://twitter.com/novlucker "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
fran800m
Desconectado
Mensajes: 139
|
Por ej. en mi caso en particular y hablando de desarrollar en ASP.NET, para atender los request de imágenes alojadas en el servidor se suele utilizar handlers (*.ashx), que son quienes se encargan de obtener los datos binarios y renderizarlos en el navegador, y ahí mismo se puede definir si la información es "cacheable" y por cuanto tiempo, con lo cual solo se hace la consulta en ese intervalo Gracias Novlucker, eso me lo apunto 
|
|
|
|
|
En línea
|
|
|
|
|
seba123neo
|
todavia no sabemos que esta haciendo, yo no hable de web, sino de .NET o VB en MySQL o SQL Server, me imagino que para web MySQL es igual. me ponen mal los usuarios que preguntan y no dan respuesta.
|
|
|
|
|
En línea
|
Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo. Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
|
|
|
BlackZeroX (Astaroth)
Wiki
Desconectado
Mensajes: 2.829
I'Love...!¡.
|
@seba123neo Una preguntona... de cuantos bytes es un solo varchar en una BDD? (No me refiero a la dimencion maxima).
Dulces Lunas!¡.
|
|
|
|
|
En línea
|
|
|
|
|
seba123neo
|
@seba123neo Una preguntona... de cuantos bytes es un solo varchar en una BDD? (No me refiero a la dimencion maxima).
Dulces Lunas!¡.
si declaras varchar(80) solo podras poner 80 caracteres o sea 80 bytes. aunque varchar usa unos bytes extra en la cabecera para almacenar la longitud. una cita: Al ser variable, Varchar necesita utilizar 1 o 2 bytes adicionales para registrar la longitud del valor: 1 byte si la longitud máxima de la columna es 255 bytes o menor y 2 bytes si es más. Entonces, si declaramos un Varchar(255) utilizará un byte adicional ósea será 256 y si lo declaramos Varchar(1500) en realidad serán 1502 bytes. para tu pregunta, varchar(1) seria igual a 2 bytes. saludos.
|
|
|
|
« Última modificación: 25 Noviembre 2011, 05:37 por seba123neo »
|
En línea
|
Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo. Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
|
|
|
|
|