Skip to content

Tutoriel C# – Stocker un fichier en Base de données

Soyez sociable ! Partagez :
  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Il m’a été demandé pour une application Web ASP.NET/C# de mettre en place un système de sauvegarde de fichier en Base de données. Ce n’est à mon humble avis pas le meilleur moyen de stocker des fichiers, mais ça peut toujours être utile quand on veut stocker des petits fichiers.

Stocker des fichiers en BDD

Stocker un fichier en Base de données

Le formulaire

En première étape, je vous montre le code ASP.NET pour créer votre espace d’envoie de fichier :

<asp:FileUpload ID="FileUploadIdentite" runat="server" />

<asp:ImageButton ID="BTNEnregistreDoc" OnClick="BTNEnregistreDoc_click"ToolTip="Enregistrer les modifications" runat="server" Text="Enregistrer" />

On un simple formulaire d’envoie de fichier tout simple.

Le schéma de base de données

Pour votre Base de données, insérez une colonne de type “varbinary(max)”. Ce type permet de stocker une chaîne de caractères binaires qui contiendra notre fichier “aplatit”.

ALTER TABLE <nom_table>
ADD <nom_colonne> varbinary(max)

Récupérer le fichier et le stocker dans la base de données

protected void BTNEnregistreDoc_click(object sender, EventArgs e)
{
string pathDoc = "Mon/Dossier/de/stockage";
string FileName = FileUploaddoc.FileName; //On récupère le nom du fichier

    if (FileUploaddoc.HasFile)
    {
        FileUploadIdentite.SaveAs(pathDoc + FileName); //On enregistre le fichier (on pourra le supprimer ensuite)
        byte[] FichierBin = GetFichier(pathDoc + FileName);
    }
    //FichierBin est prêt à être enregistrer en BDD
    //FIX it : Requete insert du fichier (qui dépendra de votre système de gestion de vos données
}

Voici la fonction vous permettant de transformer votre fichier en chaîne de caractères binaires :

private byte[] GetFichier(string filePath)
{
      FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
      BinaryReader br = new BinaryReader(fs);
      byte[] fichier = br.ReadBytes((int)fs.Length);
      br.Close();
      fs.Close();
      return fichier;
}

Requête SQL pour insérer votre fichier en BDD

sqlquery = @"INSERT INTO <nom_table> (<nom_colonne>)
                    VALUE (" + fichier + ")";
Soyez Sociable ! Partagez !
Published inTutoriel
banner