IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

System.Drawing.Image levé exception


Sujet :

ASP.NET

  1. #1
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut System.Drawing.Image levé exception
    Bonjour à tous,

    j'essaie d'insérer une image dans ma base de données SQL-Server 2000 Express dans un champ de type Image , mais malheureusement je n'y arrive pas. J'ai une exception qui se lève :

    Détails de l'exception: System.IO.FileNotFoundException: c:\monImg.jpg


    Avec la ligne qui a provoqué l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    System.Drawing.Image myImg = System.Drawing.Image.FromFile("c:/monImg.jpg");
    ...
    SqlCommand myInsertCmd = new SqlCommand("INSERT INTO Matable(MyImg) VALUES('" + myImg + "')", myConnexion3);
    Je ne comprend pas pourtant l'image est bien à l'emplacement mentionné...

    Comment faire pour insérer une image sur ma base de données ? Que fais-je de faux ?

    Pour le type Image de ma BD j'ai lu qu'il vaut mieux utiliser Varbinary à la place , car Image va être supprimé dans les futur versions, si je fais un alter column de Image en Varbinary la méthode pour insérer une image dans ma BD reste la même ?

    Merci beaucoup pour votre aide

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Regarde dans la FAQ, il y a la solution pour insérer une image dans la DB : http://dotnet.developpez.com/faq/

  3. #3
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut
    Salut SaumonAgile,

    Merci beaucoup pour ton aide, par contre j'ai cherché dans la FAQ .NET ASP/C# et C# et j'ai pas trouvé, j'ai même essayé avec crtl+f, mais rien à faire

    Pourrais-tu me dire ou tu l'as vu ?

    Par contre, j'ai trouvé Comment simuler le click sur un bouton lors de la touche "entrée" ?

    Bonne journée à tous.

  4. #4
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut
    Salut à tous,

    J'ai changé ma requête à la place j'utilise une requête préparée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    ...
    Image myImg = new Image();
            myImg .ImageUrl = "c:/collines.jpg";
    try{
    strSqlInsert = "INSERT INTO SYS_ENTETE_RAPPORT(myImage) VALUES(@monImage)";
     
    SqlCommand myInsertCmd = new SqlCommand(strSqlInsert, myConnInsert);
     
    myInsertCmd.Parameters.Add("@monImage", SqlDbType.Image);
     
    myInsertCmd.Parameters["@insertBlob1"].Value =  myImg ;
     
    myConnInsert.Open();
     
    myInsertCmd.ExecuteNonQuery();
    }
    ...
    Mais ça ne marche pas, quand je récupère l'exception j'ai le message suivant :
    Échec de la conversion de la valeur de paramètre d'un Image en un Byte[].
    C'est trop violant j'y comprend rien du tout ... pourtant on est bon là tout y est... le paramètre est bien en SqlDbType.Image, alors pourquoi il me casse encore les dents ?

    J'ai fais un alter table maTable alter column Macolonne varbinary(max) , pour ne plus utiliser le type Image qui devrait disparaître.

    Ce qui fait que ça va encore moins arranger mes affaires, déjà que je n'arrive pas à le sauver en SqlDbType.Image alors en SqlDbType.Varbinary j'imagine même pas

    Si quelqu'un a une idée je suis preneur.
    Merci de votre aide

  5. #5
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut
    Salut à tous,

    J'ai trouvé une solution à l'adresse shadbar.org

    Le code est très court et très simple j'ai juste rajouté une classe qui entoure le tout que j'ai appelé ImageReader ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    public class ImageReader
    {
        public byte[] Readfile(string sPath)
        {
            //Initialise le tableau de byte à null
            byte[] data = null;
     
            //Utilisation des info du fichier pour récupérer la taille
            FileInfo fInfo = new FileInfo(sPath);
            long numBytes = fInfo.Length;
     
            //Ouverture de flux de fichier pour lecture
            FileStream fStream = new FileStream(sPath, FileMode.Open, FileAccess.Read);
     
            //Utilisation de BinaryReader pour lire le flux dans un tableau de byte
            BinaryReader br = new BinaryReader(fStream);
     
            //Quand on utilise un BinaryReader, on a besoin
            //de connaitre le nombre de byte à lire pour un fichier
     
            //Lécture du fichier entier
            data = br.ReadBytes((int)numBytes);
            return data;
        }
    }
    Voilà bonne journée à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. System.Drawing.Image et Exceptions très vagues
    Par piotrr dans le forum Framework .NET
    Réponses: 1
    Dernier message: 24/06/2009, 19h00
  2. [VB.NET]récupérer un objet System.Drawing.Image du Web
    Par luggerhouse dans le forum Windows Forms
    Réponses: 9
    Dernier message: 03/12/2008, 20h25
  3. problème avec System.Drawing.Image.FromFile
    Par tenderstoune dans le forum C#
    Réponses: 8
    Dernier message: 07/08/2008, 10h39
  4. Erreur sur System.Drawing.Image
    Par dieudo dans le forum VB.NET
    Réponses: 12
    Dernier message: 12/03/2008, 18h29
  5. pb de system.drawing.image
    Par logarithme1984 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 26/03/2007, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo