Quiero guardar la imagen del usuario en una base de datos en C#. ¿Cómo puedo hacer eso?Cómo guardar imágenes en la base de datos usando C#
Respuesta
Deberá serializar la imagen a un formato binario que pueda almacenarse en una columna SQL BLOB. Suponiendo que está utilizando SQL Server, aquí es un buen artículo sobre el tema:
usted querrá convertir la imagen a un byte[]
en C#, y entonces tendrá la columna de la base de datos como varbinary(MAX)
Después de eso, es como guardar cualquier otro tipo de datos.
puede guardar la ruta de la imagen en la base de datos o guardarla como un BLOB (binario - array de bytes) .. depende del caso que tenga, si su aplicación es una aplicación web, luego guarde la ruta de la imagen es mucho mejor. Pero si tiene una aplicación basada en el cliente que se conecta a una base de datos centralizada, debe guardarla como binaria.
Esto debe ser un comentario. El usuario pide otra cosa. Si tiene una crítica al método, por favor use un comentario. –
Este es un método que utiliza un control FileUpload en asp.net:
byte[] buffer = new byte[fu.FileContent.Length];
Stream s = fu.FileContent;
s.Read(buffer, 0, buffer.Length);
//Then save 'buffer' to the varbinary column in your db where you want to store the image.
Puesto que usted está utilizando SQL, recomendaría contra el uso de adhoc ('declaraciones de escritura en cadenas'), especialmente teniendo en cuenta que son cargando una imagen.
ADO.NET puede hacer todo el trabajo arduo de mapeo, escape, etc. para usted.
Cree un Procedimiento almacenado o utilice SqlParameter para realizar la vinculación.
Como dicen los otros carteles, use VARBINARY (MAX) como su tipo de almacenamiento - IMAGE está siendo depracated.
Pruebe este método. Debería funcionar cuando el campo cuando desea almacenar la imagen es del tipo bytea
. Primero crea byte[]
para la imagen. Luego lo guarda DB usando IDataParameter
del tipo binary
.
public static void PerisitImage(string path, IDbConnection connection)
{
using (var command = connection.CreateCommand())
{
Image img = Image.FromFile (path);
MemoryStream tmpStream = new MemoryStream();
img.Save (tmpStream, ImageFormat.Png); // change to other format
tmpStream.Seek (0, SeekOrigin.Begin);
byte[] imgBytes = new byte[MAX_IMG_SIZE];
tmpStream.Read (imgBytes, 0, MAX_IMG_SIZE);
command.CommandText = "INSERT INTO images(payload) VALUES (:payload)";
IDataParameter par = command.CreateParameter();
par.ParameterName = "payload";
par.DbType = DbType.Binary;
par.Value = imgBytes;
command.Parameters.Add(par);
command.ExecuteNonQuery();
}
}
Para aquellos que lean esto más adelante, 'DbType.Binary' maneja' varbinary (MAX) 'aunque la ayuda sobre herramientas dice que está limitado a 8000 bytes. –
Mi preferencia personal no es guardar las imágenes en una base de datos como tal. Guarde la imagen en algún lugar del sistema de archivos y guarde una referencia en la base de datos.
Solo es útil en algunos casos, ya que tiene que hacer que el sistema de archivos en cuestión se abra a todo el código .NET. También es inconsistente. Puede ser lo suficientemente útil en aplicaciones web, siempre y cuando no necesites expandirte a una webfarma, momento en el que compartir los archivos puede ser una molestia. –
puede usar el SQL http://msdn.microsoft.com/en-us/library/cc949109.aspx - también disponible en nHIbernate desde 2.1 http://zvolkov.com/blog/post/2009/07/20/ Whats-new-in-NHibernate-21.aspx serilaizing en la base de datos no es una buena estrategia de diseño - tener que establecer permisos en una carpeta no es una buena razón para no hacerlo correctamente :) – iwayneo
@cvista Guardo las imágenes en la base de datos frecuentemente. Coloque una instancia de Memcached en la mezcla y se vuelve aún más atractivo. – Ryan
//Arrange the Picture Of Path.***
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
string[] PicPathArray;
string ArrangePathOfPic;
PicPathArray = openFileDialog1.FileName.Split('\\');
ArrangePathOfPic = PicPathArray[0] + "\\\\" + PicPathArray[1];
for (int a = 2; a < PicPathArray.Length; a++)
{
ArrangePathOfPic = ArrangePathOfPic + "\\\\" + PicPathArray[a];
}
}
// Save the path Of Pic in database
SqlConnection con = new SqlConnection("Data Source=baqar-pc\\baqar;Initial Catalog=Prac;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand("insert into PictureTable (Pic_Path) values (@Pic_Path)", con);
cmd.Parameters.Add("@Pic_Path", SqlDbType.VarChar).Value = ArrangePathOfPic;
cmd.ExecuteNonQuery();
***// Get the Picture Path in Database.***
SqlConnection con = new SqlConnection("Data Source=baqar-pc\\baqar;Initial Catalog=Prac;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand("Select * from Pic_Path where ID = @ID", con);
SqlDataAdapter adp = new SqlDataAdapter();
cmd.Parameters.Add("@ID",SqlDbType.VarChar).Value = "1";
adp.SelectCommand = cmd;
DataTable DT = new DataTable();
adp.Fill(DT);
DataRow DR = DT.Rows[0];
pictureBox1.Image = Image.FromFile(DR["Pic_Path"].ToString());
Creo que esta pregunta válida ya está respondida aquí. Lo he intentado también. Mi problema era simplemente usar la edición de imágenes (desde DevExpress). y así es como llegué a su alrededor:
- Cambio del PictureEdit propiedad "PictureStoreMode" a ByteArray: está establecido actualmente en "default"
- convertir el valor de edición del control para bye: byte [ ] newImg = (byte []) pictureEdit1.EditValue;
- guardar la imagen: this.tbSystemTableAdapter.qry_updateIMGtest (newImg);
Gracias de nuevo. Chagbert
- 1. pysqlite - cómo guardar imágenes
- 2. Cómo guardar la imagen en una base de datos?
- 3. cómo guardar etiquetas (palabras clave) en la base de datos?
- 4. ¿Debo guardar mis imágenes en la base de datos o en las carpetas?
- 5. Guardar datos en árabe en la base de datos MySQL
- 6. Cómo guardar el modelo Backbone.js en la base de datos
- 7. ¿Cómo guardar una cadena cifrada en la base de datos?
- 8. Cómo almacenar imágenes en la base de datos SQLite
- 9. C#: Base de datos interna de archivo en la aplicación
- 10. guardar texto con formato html en la base de datos
- 11. Guardar múltiples imágenes en Android
- 12. Cómo guardar imágenes utilizando libcurl
- 13. cómo almacenar video en la base de datos usando mysql?
- 14. Guardar matriz en la base de datos mysql
- 15. Guardar acentos en la base de datos MySQL
- 16. cómo guardar relación marital en una base de datos
- 17. Guardar imágenes: ¿archivos o blobs?
- 18. Guardar lienzo html5 como datos en la base de datos mysql
- 19. Mongo Base de Datos de guardar los datos del mapa
- 20. Guardar pdf a jpeg usando C#
- 21. ¿Crees que es una buena idea guardar miles de millones de imágenes en la base de datos?
- 22. Guardar estructuras de datos en C#
- 23. C# - Integración de datos (imágenes) en .exe
- 24. ¿Cómo guardar imágenes y archivos grabados en el directorio temporal?
- 25. Android ¿Cómo guardar las imágenes de la cámara en la base de datos y mostrar otra actividad en la vista de lista?
- 26. C# y conexión de base de datos remota (usando Compact)
- 27. Guardar imágenes en Outlook 2007
- 28. Cómo guardar documentos de doc, pdf y de imagen en la base de datos mysql usando java?
- 29. cómo guardar las imágenes mostradas en la vista web?
- 30. Guardar un archivo usando libcurl en C
Eche un vistazo a: http: // stackoverflow.com/questions/744589/how-do-you-store-a-picture-in-an-image-column/744603 # 744603 – Canavar
Posible duplicado de [¿Cómo guardar la imagen en la base de datos y mostrarla en Views in MVC 4?] (http://stackoverflow.com/questions/20825119/how-to-save-image-in-database-and-display-it-into-views-in-mvc-4) –