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 :

enregistrer une fichier comme pièce jointe dans une application web Dotnet


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut enregistrer une fichier comme pièce jointe dans une application web Dotnet
    Bonjour tout le monde
    je suis entrain de développer une application web en asp Dot net avec c#.
    en gros, dans cette application je dois permettre à un utilisateur de remplir un formulaire. ainsi, je dois lui permettre d'ajouter une piece jointe au formulaire.
    j'ai utilisé le sqlServer2005 comme base de donnée. la piece jointe est declarée dans la base comme image, mais je sais pas comment je vais la déclarer dans mon code (en c#) ni comment la sauvegarde va se faire dans la base!!
    si quelqu'un peux m'aider je serai très reconnaissante car je suis vraiment bloquée.
    merci d'avance.

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Tu as un controle asp.net (dans la barre d'outils) qui permet d'uploader un fichier.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    d'abord merci pour vos reponse
    pour le controleur asp.net, j'ai utilisé le input(file), certe il permet l'upload d'un fichier mais mon probleme c'est que d'une part je ne sais pas comment le réccupérer, et même si j'arrive à le faire je ne sais pas comment je dois declarer la variable qui va contenir ce fichier pour nsuite pouvoir le stocker dans ma base sqlserver 2005!!

  4. #4
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    ton fichier n'est rien d'autre qu'un tableau de bytes. donc de ton fileupload, tu va recupérer un tableau de bytes que tu va sauver dans ton champ image.

    le champ image est un format binaire donc tout à fait compatible.

    Je ne vois pas où tu bloques..

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    bon, je suis en train de voir l 'exemple du lien que tu m'as donné.
    mon probleme c'est que j'utilise une architecture 3 tirs, donc l'acces à la base de données se faire par des dataSet typé.
    en plus, je suis encore débutante en dotNet et cela me rend la tâche un peu plus délicate (familiarisation avec les types et les instructions...)

    merci en tout cas, je vais m'inspirer de l'exemple et essayer de resoudre ce probleme.
    a+

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    salut
    voila, j'ai finalement réussi à sauvegarder une pièce jointe dans ma base sqlserver 2005, mais lors de la récupération de celle ci de la base, l'affichage se fait dans une autre page, je veux définir un objet "image" à partir des outils aspx, et c'est la ou je vais afficher mon image, quelqu'un peut m'aider!!
    *********************************
    voila ce que j'ai normalement:
    byte[] image = (byte[])essai.Image;
    MemoryStream stream = new MemoryStream();
    stream.Write(image, 0, image.Length);
    Bitmap bitmap = new Bitmap(stream);
    Response.ContentType = "image/gif";
    bitmap.Save(Response.OutputStream, ImageFormat.Gif);


    merci d'avance;

  7. #7
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    L'objet image, je ne crois pas qu il puisse afficher depuis un flux.. il faut sauver ton image dans un dossier temporaire et lui indiquer le chemin...

    je dis ça sous réserve.. peut-etre qqn peut confirmer...

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    c'est encore moi mais cette fois avec un nouveau probleme!!
    j'ai fait un essai pour l'insertion de l'image dans une simple page aspx, et ca a bine marché comme j'ai dit dans mon ancien message, mais en fait, je devais refaire ca mais cette fois ci dans une page aspx qui herite d'une master page, le probleme avec celle ci c'est que l'identifiant de mon inputFile n'est pa reconnu dans ma page aspx.
    je pense que je dois utiliser du javascript mais je sais pas comment faire
    help svp
    merci d avance!!
    *********************************
    avec la page master, mes objet doivent etre dans un content, comme ceci par exemple:
    <%@ Page Language="C#" MasterPageFile="~/NoteFrais.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
    <input id="File1" type="file" onclick="return File1_onclick()" />
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
    <asp:Label ID="Label1" runat="server" Height="25px" Text="Label" Width="190px"></asp:Label>

    </asp:Content>
    ************************************************
    or avec une page qui n'herite pas d'une masterpage, mon code est comme ca:
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Essai.aspx.cs" Inherits="NoteFrais.Administrateur_Essai" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>Untitled Page</title>
    </head>
    <body>

    <form id="Form1" method="post" enctype="multipart/form-data" runat="server">
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click1" />&nbsp;
    <asp:Label ID="Label1" runat="server" Text="Label" Width="88px"></asp:Label>
    <input id="champ" type="file" runat="server" style="Z-INDEX: 103; LEFT: 235px; POSITION: absolute; TOP: 101px"/>

    </form>
    </body>
    </html>

    *******************************************

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    pour remedier a ce probleme il suffit au lieu d utiliser le controleur html inputfile (qui pose probleme) le remplacer par un controleur aspx uploadFile, ca résout le probleme
    a part le probleme d'affichage je peux dire que la tache qui pose probleme est resolue
    merci a vs tous;

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 54
    Points
    54
    Par défaut
    Je n'ai pas bien compris le qu'elle étais le problème d'affichage.

    Ton code :
    byte[] image = (byte[])essai.Image;
    MemoryStream stream = new MemoryStream();
    stream.Write(image, 0, image.Length);
    Bitmap bitmap = new Bitmap(stream);
    Response.ContentType = "image/gif";
    bitmap.Save(Response.OutputStream, ImageFormat.Gif);

    est correcte sauf que je remplacerais les 4 premières ligne par :
    Bitmap bitmap = new Bitmap(new memorystream((byte[])essai.Image);

    Par contre tu cast toute tes images en gif et par défaut, il utilise la pallette web de 256 couleurs, qui risque de t'afficher des images avec les mauvaises couleurs.

  11. #11
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    Bossun je confirme ce que tu as dit.

    enregistrer le fichier temporairement en local afin de pouvoir l'utiliser comme on veut est un solution.

  12. #12
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    Non pas forcément.. tu peux créer des pièces jointes à partir d'un flux sans passer par un fichier temporaire....

    http://msdn.microsoft.com/en-us/libr...rs(VS.80).aspx

  13. #13
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut

    j'ai pas encore trouvé une solution à mon problème d'affichage de l'image.
    au début comme j'ai dit auparavant:
    c'est comme ca que je fait pour afficher mon élément récupéré d la base:
    ********************************************
    bitmap.Save(Response.OutputStream, ImageFormat.Gif);
    ********************************************
    ce que je veux faire exactement, c'est récupérer une table de ma base et l'afficher dans un dataGridView, chaque element dans ma table contient un champ image et c'est celle ci qui me pose probleme.
    maintenant, j'affiche tous les autre champs dans la la DataGridView, et j'ai ajouter une commande "image". ca lien dans le dataGrid doit m'aficher l'image correspondante à la ligne selectionnée.
    et puisque c'est comme ca que je fait pour l'affichage de l'image (bitmap.Save(Response.OutputStream, ImageFormat.Gif), mon image s'affiche dans la meme page en effacant tous les autres champs.
    alors j'ai crée un iframe dans ma page pour que je redirige le flux vers une autre page qui s'affichera dans cet iframe.
    Alors:je ne sais pas comment faire cela, passer le flux de ma page vers une autre.

    autre chose, j'ai lu que le raffrechissement d'u iframe pose probleme, et j'ai trouvé dans un forum q il suffit d'ajouter cette ligne (response.expires=0 ) ds la page pour forcer le raffraichissement, mais je sais pa où exactement mettre cette ligne, si quelqu'un peut m'aider je serais tres tres reconnaissante.

  14. #14
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    au fait, pour le choix de l'extention gif, c'est pour l'espace de stockage.
    la qualité de l'image n'est pas si interressante que la taille que va occuper celle ci dans la base.

Discussions similaires

  1. Enregistrer des fichiers word, pdf, etc. dans une base de données
    Par mallsoul dans le forum Décisions SGBD
    Réponses: 23
    Dernier message: 10/09/2014, 16h48
  2. [AC-2007] Problème d'ajout de pièces jointes dans une base de données access
    Par kek's dans le forum VBA Access
    Réponses: 3
    Dernier message: 23/11/2011, 10h13
  3. Réponses: 1
    Dernier message: 04/10/2011, 14h05
  4. Pièce jointe dans une table possible ?
    Par Badouba75 dans le forum MySQL
    Réponses: 8
    Dernier message: 18/02/2009, 12h34
  5. [SQL] comment enregistrer un fichier doc ou pdf dans une BD
    Par adilassadi dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/05/2007, 18h17

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