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

C# Discussion :

chemin d'accés de fichier pour l'ouvrir avec FileStream


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut chemin d'accés de fichier pour l'ouvrir avec FileStream
    Bonjour,

    Voulant essayer d'ouvrir un fichier pdf dans une nouvelle fenetre, après quelques recherches j'ai trouvé qu'on peut le faire avec FileStream. Mais en fait un essai il m'affiche qu'il y on a erreur impossible de trouver le fichier ce qui me parait un peu bizare qu'il m'affiche ce chemin c:\System.Web.UI.WebControls.HiddenField.pdf j'ai pas compris d’où ça vient
    System.Web.UI.WebControls.HiddenField
    j'ai attendu à avoir la valeur de
    hidCode.ToString()
    Je vous joint mon code aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    string pathPdf = AppDomain.CurrentDomain.BaseDirectory ;
                FileStream MyFileStream = new FileStream(pathPdf+ hidCode.ToString() +".pdf", FileMode.Open);
                long FileSize;
                FileSize = MyFileStream.Length;
                byte[] Buffer = new byte[(int)FileSize];
                MyFileStream.Read(Buffer, 0, (int)MyFileStream.Length);
                MyFileStream.Close();
                Response.ContentType = "application/pdf";
                Response.AddHeader("content-disposition", "attachment; filename= foo.PDF");
                Response.BinaryWrite(Buffer);
    Si vous aurez d'autres méthodes autre que l'utilisation de FileStream merci de me les indiquer.

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string pathPdf = AppDomain.CurrentDomain.BaseDirectory ;
    te retourne quoi comme chemin?

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    te renvoie le type HiddenField en string.
    Ce que tu veux, c'est le contenu de ton HiddenField, donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hidCode.value.ToString()

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    Merci pour vos réponses comme il a dis calagan99 il fallait mettre
    hidCode.value.ToString()
    j'ai le bon chemin maintenant mais j'ai eu cette erreur
    Le processus ne peut pas accéder au fichier car il est en cours d'utilisation par un autre processus.
    Je comprend pas pourquoi j'ai ce problème malgré que le fichier PDF est crée et enregistré dans un dossier, et moi ce que je veux c'est juste afficher ce fichier dans une nouvelle fenêtre. Est ce que vous avez une idée

  5. #5
    Membre actif Avatar de Faereth
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2007
    Messages : 92
    Points : 295
    Points
    295
    Par défaut
    Bonjour,

    Quand tu as écris et enregistré le fichier est-ce que tu libères ton writer?
    Un sage se distingue des autres hommes, non par moins de folie, mais par plus de raison.

    Emile-Auguste Chartier, dit Alain

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    @Faereth: Comme je crée mon fichier pdf en utilisant la classe PdfDocument
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PdfDocument document = new PdfDocument();
    string pathPdf = AppDomain.CurrentDomain.BaseDirectory + @"PDFFiles\" + hidCode + ".pdf";
    document.Save(@pathPdf);
    Je ne vois pas comment je peux procéder pour
    Quand tu as écris et enregistré le fichier est-ce que tu libères ton writer?

  7. #7
    Membre actif Avatar de Faereth
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2007
    Messages : 92
    Points : 295
    Points
    295
    Par défaut
    Je sais pas si cela vient de là mais tant qu'à faire essaye de faire comme ça :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    using(PdfDocument document = new PdfDocument())
    {
      string pathPdf = AppDomain.CurrentDomain.BaseDirectory + @"PDFFiles\" + hidCode + ".pdf";
      document.Save(@pathPdf);
    }

    Le using permet de libérer l'objet créé une fois que tu es sortis des accolades.
    J'avais eu le même problème pour la création de PDF, avec un autre librairie par contre.
    Un sage se distingue des autres hommes, non par moins de folie, mais par plus de raison.

    Emile-Auguste Chartier, dit Alain

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    @Faereth: je viens de l'essayer mais toujours pareil(j'ai la même erreur)

  9. #9
    Membre actif Avatar de Faereth
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2007
    Messages : 92
    Points : 295
    Points
    295
    Par défaut
    Tu veux afficher le PDF dans quel genre de fenêtre? Dans un viewer? ou tu cherches juste à l'ouvrir par un Process.Start()?
    Un sage se distingue des autres hommes, non par moins de folie, mais par plus de raison.

    Emile-Auguste Chartier, dit Alain

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    Je ne vois pas c'est quoi la différence mais ce qui m’intéresse c'est plutôt afficher le fichier PDf

  11. #11
    Membre actif Avatar de Faereth
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2007
    Messages : 92
    Points : 295
    Points
    295
    Par défaut
    Donc tu veux le lancer après sa création.

    Le problème c'est qu'à un moment tu ne dois pas libérer un objet qui créé ton PDF ou qui écrit dedans, donc tu ne peux pas le lancer.

    Tu n'aurais pas un peu plus de code à montrer de la création à la sauvegarde de ton PDF?
    Un sage se distingue des autres hommes, non par moins de folie, mais par plus de raison.

    Emile-Auguste Chartier, dit Alain

  12. #12
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PdfDocument document = new PdfDocument()
    PdfPage page = document.AddPage();
    // Get an XGraphics object for drawing 
    XGraphics gfx = XGraphics.FromPdfPage(page);
    // Create a font 
    XFont font1 = new XFont("Verdana", 20, XFontStyle.Underline);
    XFont fElement = new XFont("Verdana", 8, XFontStyle.Bold);
    gfx.DrawString(Titre, fElement, XBrushes.Black, new XRect(100, 180 + c, 11, 11), XStringFormats.Center);
    gfx.DrawString(hidCode, fElement, XBrushes.Black, new XRect(410, 180 + c, 11, 11), XStringFormats.Center);
     
    string pathPdf = AppDomain.CurrentDomain.BaseDirectory + @"PDFFiles\" + hidCode + ".pdf";
    document.Save(@pathPdf);

  13. #13
    Membre actif Avatar de Faereth
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2007
    Messages : 92
    Points : 295
    Points
    295
    Par défaut
    Tu peux essayer comme ça :

    Code c# : 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
    using(PdfDocument document = new PdfDocument())
    {
      using(PdfPage page = document.AddPage())
      {
        // Get an XGraphics object for drawing 
        using(XGraphics gfx = XGraphics.FromPdfPage(page))
        {
          // Create a font 
          XFont font1 = new XFont("Verdana", 20, XFontStyle.Underline);
          XFont fElement = new XFont("Verdana", 8, XFontStyle.Bold);
          gfx.DrawString(Titre, fElement, XBrushes.Black, new XRect(100, 180 + c, 11, 11), XStringFormats.Center);
          gfx.DrawString(hidCode, fElement, XBrushes.Black, new XRect(410, 180 + c, 11, 11), XStringFormats.Center);
     
          string pathPdf = AppDomain.CurrentDomain.BaseDirectory + @"PDFFiles\" +   hidCode + ".pdf";
          document.Save(@pathPdf);
        }
      }
    }
    Un sage se distingue des autres hommes, non par moins de folie, mais par plus de raison.

    Emile-Auguste Chartier, dit Alain

  14. #14
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    Pour
    using(PdfPage page = document.AddPage())
    il me sort une erreur
    'PdfSharp.Pdf.PdfPage' le type utilisé dans une instruction using doit être convertible implicitement en 'System.IDisposable'
    et quand j'ai enlevé le using j'ai voulu le tester pour les 2 autres pour voir est ce que ca marche j'ai eu comme d'habitude l'erreur un autre processus utilise ce fichier.

    Est ce que t'as pas une autre méthode pour ouvrir le fichier

    Merci.

  15. #15
    Membre actif Avatar de Faereth
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2007
    Messages : 92
    Points : 295
    Points
    295
    Par défaut
    Ah oui j'avais pas pensé à ça.

    Mais tu l'ouvres comment ton PDF en fait? Le document.Save(@path) doit te l'ouvrir normalement ou il fait juste la sauvegarde?
    Un sage se distingue des autres hommes, non par moins de folie, mais par plus de raison.

    Emile-Auguste Chartier, dit Alain

  16. #16
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    si tu fais ça pour le filestream ça fonctionne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     FileStream MyFileStream = new FileStream(Server.MapPath(@pathPdf), FileMode.Open);

  17. #17
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    Pour l'ouverture comme je viens de le noter avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    string pathPdf = AppDomain.CurrentDomain.BaseDirectory ;
                FileStream MyFileStream = new FileStream(pathPdf +".pdf", FileMode.Open);
                long FileSize;
                FileSize = MyFileStream.Length;
                byte[] Buffer = new byte[(int)FileSize];
                MyFileStream.Read(Buffer, 0, (int)MyFileStream.Length);
                MyFileStream.Close();
                Response.ContentType = "application/pdf";
                Response.AddHeader("content-disposition", "attachment; filename= foo.PDF");
                Response.BinaryWrite(Buffer);
    Tandis document.Save(@path) ne fait que l'enregistrement

  18. #18
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    voici la procédure que j'utilise pour lancer un téléchargement:

    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
     
     /// <summary>
        /// Fonction qui permet de télécharger un fichier sur le serveur grâce a son url
        /// </summary>
        /// <param name="urlFichier">est le chemin du fichier sur le serveur</param>
        private void telechargement(string urlFichier)
        {
            // On récupère les informations sur le fichier
            FileInfo file = new FileInfo(urlFichier);
            // On efface le response
            Response.Clear();
            // On ajoute les entêtes pour le fichier
            Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
            Response.AddHeader("Content-Length", file.Length.ToString());
            Response.ContentType = "application/octet-stream";
            // On lance le téléchargement
            Response.WriteFile(file.FullName);
            // On ferme le response
            Response.Flush();
            Response.Close();
        }

  19. #19
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    youtpout978: Je viens de l'essayer merci beaucoup ça marche nickel J'ai une autre question est ce qu'on peux ouvrir ce fichier dans un nouvel onglet dans la même page internet ? Je ne sais pas est ce que ma question est réalisable sachant que je viens de trouver qu'on peux ouvrir une page aspx dans un nouvel onglet mais ce que je me demande est ce que c'est possible de procéder de telle sorte qu'à la place de newWindowUrl je mettrais le chemin du fichier
    Voici le code pour ouvrir une page aspx dans un nouvel onglet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    string windowArgs = "";
                string newWindowUrl = "PDF.aspx?hid=" + hidCode.Value+ "&WindowArgs=" + windowArgs;
                string javaScript = "<script type='text/javascript'>\n" +
                 "<!--\n" +
                 "window.open('" + newWindowUrl + "');\n" +
                 "// -->\n" +
                 "</script>\n";
                ClientScript.RegisterStartupScript(this.GetType(), "key", javaScript);
    PS: J’espère que je ne dis pas de grosses conneries

Discussions similaires

  1. Ouverture fichier en mode normal + Chemin d'accès au fichier à ouvrir
    Par rberniga dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2010, 03h24
  2. Réponses: 1
    Dernier message: 18/11/2009, 18h49
  3. Accès à des fichiers pour ouverture d'une image
    Par noutnout53 dans le forum C++
    Réponses: 4
    Dernier message: 02/06/2006, 15h44
  4. Chemin d'accès des fichiers dans des sous rep
    Par Le Veilleur dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/11/2004, 14h37

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