chargement image conserver dans mysql
j'ai des images conservé dans un blob. Le probleme est que ca peut prendre 2 minutes avant que l'image s'affiche.
je récupère l'image de la facon suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
public byte[] GetByteImage(string commande)
{
if (!string.IsNullOrEmpty(commande))
{
MySql.Data.MySqlClient.MySqlConnection con;
con = new MySql.Data.MySqlClient.MySqlConnection();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
con.ConnectionString = ConnectionString;// "database=" + BdName + ";Data Source=" + IpAdress + ";User Id=" + UserName + ";Password=" + UserPwd;
con.Open();
cmd.Connection = con;
MySql.Data.MySqlClient.MySqlDataReader reader = null;
DataSet DSimg = new DataSet();
cmd.CommandText = commande;
//cmd.CommandText = "select img from image where idimg = '" + image + "'";
reader = cmd.ExecuteReader();
reader.Read();
byte[] btMnImage = (byte[])reader.GetValue(0);
reader.Close();
return btMnImage;
}
else
{
return null;
}
} |
j'ai une page qui contient un objet image dans lequel je met la source a une seconde page avec se code dans le page_load
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
if (Request.QueryString["idImage"] != null)
{
string idImage= Request.QueryString["idImage"].ToString();
commande= string.Format(commande,idImage);
Byte[] bytes = myBusiness.GetByteImage(commande);
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "image/jpeg";
Response.AddHeader("content-disposition", "attachment;filename=Image");
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
} |
il semble que c'est cette ligne de code qui est lente
reader = cmd.ExecuteReader();
est-ce qu'il aurait un autre moyen de récupérer les images.
j'utilise cette meme partie de code dans des winforms et c'est beacoup plus rapide, il a tu une raison pourquoi qu'en asp.net c'est aussi lent.
merci