none
Save File Dialog RRS feed

  • Question

  • Bonjour,

    Est ce possible dans une application WEB C# Framework 1.1 d'ouvrir un "SaveFileDialog". pour enregistrer en local des fichiers.

    Quelqu'un peut t'il m'aider.

    Si c'est possble pour un "SaveFileDialog", donc pour un "MessageBox.Show", ca devrait l'être... j'espere...

    Merci,

    mardi 11 octobre 2011 17:28

Réponses

  • Bonjour,

    Non ce n'est pas possible. SaveFileDialog et MessageBox sont des classes .NET et s'exécuteront côté serveur (et non côté client).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Proposé comme réponse Ciprian Duduiala mercredi 12 octobre 2011 06:23
    • Marqué comme réponse Ciprian Duduiala lundi 17 octobre 2011 05:13
    • Non marqué comme réponse GraySky mercredi 19 octobre 2011 15:21
    • Marqué comme réponse Ciprian Duduiala jeudi 20 octobre 2011 06:26
    mardi 11 octobre 2011 18:33
    Modérateur
  • Bonjour,

     

    Voici un exemple qui peut vous aider :

     

                string fileName = "test.xls";
                string filePath = Server.MapPath("~/Test.xls");
                Response.Clear();
    
                Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
                Response.ContentType = "application/vnd.ms-excel";
                Response.WriteFile(filePath);
                Response.Flush();
                Response.End();
    

    Il permet d'envoyer à l'utilisateur un fichier Excel.

    Vous devez le modifier de sorte que le chemin de votre fichier se trouve dans la variable filePath.

    Vous devez aussi modifier le Response.ContentType pour qu'il correspond au type de votre fichier (ici MS Excel). Vous pouvez aussi supprimer cette ligne.

     

    J'espère que ce là pourra vous aider.

     

    mercredi 12 octobre 2011 10:40
    Auteur de réponse
  • Bonjour,

    Je pense que l'on veut plus tôt faire un transfert de fichier du serveur vers le client et pas l'inverse.

    Effectivement, dans ce cas il faut utilser une fonction de type Download:

            private void DownloadFile(string file, bool forceDownload)
            {
                string path = MapPath(file);
                string name = Path.GetFileName(path);
                string extension = Path.GetExtension(path);
                string type = string.Empty;
    
                if (!string.IsNullOrEmpty(extension))
                {
                    switch (extension.ToLower())
                    {
                        case "pdf":
                            type = "application/pdf";
                            break;
                        case ".htm":
                        case ".html":
                            type = "text/HTML";
                            break;
                        case ".txt":
                            type = "text/plain";
                            break;
                        case ".doc":
                        case ".rtf":
                            type = "application/msword";
                            break;
                        case "xml":
                            type = "application/xml";
                            break;
    
                        // Ajouter d'autres types si nécessaire ...
                    }
                }
    
                if (forceDownload)
                    Response.AppendHeader("content-disposition", "attachment; filename=" + name);
    
    
                if (!string.IsNullOrEmpty(type))
                    Response.ContentType = type;
    
                Response.TransmitFile(path);
                Response.End();
            }
    


    Mais, la sélection du répertoire de sauvegarde et autre ... est à la merci du browser Web.

    Si le fichier n'est pas construit dynamiquement, il suffit d'utiliser <a href="myFile.pdf">myFile.pdf</a>.


    aelassas.free.fr
    mercredi 12 octobre 2011 19:45
    Auteur de réponse

Toutes les réponses

  • Bonjour,

    Non ce n'est pas possible. SaveFileDialog et MessageBox sont des classes .NET et s'exécuteront côté serveur (et non côté client).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Proposé comme réponse Ciprian Duduiala mercredi 12 octobre 2011 06:23
    • Marqué comme réponse Ciprian Duduiala lundi 17 octobre 2011 05:13
    • Non marqué comme réponse GraySky mercredi 19 octobre 2011 15:21
    • Marqué comme réponse Ciprian Duduiala jeudi 20 octobre 2011 06:26
    mardi 11 octobre 2011 18:33
    Modérateur
  • Bonjour,

    AH ok Merci,

    Existe t-il un autre moyen d'ouvrir une fenetre permettant à l'utilisateur de choisir l'emplacement de sauvegarde d'un fichier?

    mercredi 12 octobre 2011 07:31
  • Bonjour,

     

    Voici un exemple qui peut vous aider :

     

                string fileName = "test.xls";
                string filePath = Server.MapPath("~/Test.xls");
                Response.Clear();
    
                Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
                Response.ContentType = "application/vnd.ms-excel";
                Response.WriteFile(filePath);
                Response.Flush();
                Response.End();
    

    Il permet d'envoyer à l'utilisateur un fichier Excel.

    Vous devez le modifier de sorte que le chemin de votre fichier se trouve dans la variable filePath.

    Vous devez aussi modifier le Response.ContentType pour qu'il correspond au type de votre fichier (ici MS Excel). Vous pouvez aussi supprimer cette ligne.

     

    J'espère que ce là pourra vous aider.

     

    mercredi 12 octobre 2011 10:40
    Auteur de réponse
  • Bonjour,

    En ASP .NET 2.0 et versions ultérieurs, il existe le composant FileUpload qui permet d'uploader les fichiers sur le serveur.

    Si vous utiliser la version 1.1, cet article sur codeproject pourrait vous aider.

    Cordialement,


    aelassas.free.fr
    mercredi 12 octobre 2011 13:26
    Auteur de réponse
  • Bonjour,

    Je pense que l'on veut plus tôt faire un transfert de fichier du serveur vers le client et pas l'inverse.

    mercredi 12 octobre 2011 13:43
    Auteur de réponse
  • Bonjour,

    Je pense que l'on veut plus tôt faire un transfert de fichier du serveur vers le client et pas l'inverse.

    Effectivement, dans ce cas il faut utilser une fonction de type Download:

            private void DownloadFile(string file, bool forceDownload)
            {
                string path = MapPath(file);
                string name = Path.GetFileName(path);
                string extension = Path.GetExtension(path);
                string type = string.Empty;
    
                if (!string.IsNullOrEmpty(extension))
                {
                    switch (extension.ToLower())
                    {
                        case "pdf":
                            type = "application/pdf";
                            break;
                        case ".htm":
                        case ".html":
                            type = "text/HTML";
                            break;
                        case ".txt":
                            type = "text/plain";
                            break;
                        case ".doc":
                        case ".rtf":
                            type = "application/msword";
                            break;
                        case "xml":
                            type = "application/xml";
                            break;
    
                        // Ajouter d'autres types si nécessaire ...
                    }
                }
    
                if (forceDownload)
                    Response.AppendHeader("content-disposition", "attachment; filename=" + name);
    
    
                if (!string.IsNullOrEmpty(type))
                    Response.ContentType = type;
    
                Response.TransmitFile(path);
                Response.End();
            }
    


    Mais, la sélection du répertoire de sauvegarde et autre ... est à la merci du browser Web.

    Si le fichier n'est pas construit dynamiquement, il suffit d'utiliser <a href="myFile.pdf">myFile.pdf</a>.


    aelassas.free.fr
    mercredi 12 octobre 2011 19:45
    Auteur de réponse
  • Bonjour GraySky,

    Avez-vous essayé la solution proposée par Link.fr ?

    Si c'est le cas et votre problème se trouve désormais résolu, merci de tenir la communauté informée de vos démarches afin que d'autres utilisateurs dans votre cas puissent trouver les réponses adéquates à leurs problèmes !

    Bonne journée.


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact
    • Modifié Michel K dimanche 16 octobre 2011 13:20 erreur dans le nom
    dimanche 16 octobre 2011 09:56
  • Bonjour,

    Encore désolé pour ce retard dans mes réponses.

    Le but est de permettre à l'utilisateur de choisir un chemin et répertoire dans lequel  la copie du fichier va se faire.

    Mon fichier d'origine est deja crée et existe. Je cherche une vue plus ou moins resseblante à un "SaveFileDialog" a présenter à l'utilisateur.

     

    Merci,

    mercredi 19 octobre 2011 15:20
  • Bonjour,

     

    J'imagine que votre fichier se trouve du coté serveur.

    Avez vous testé la solution ou les solution proposées ? Car justement elles doivent permettre un comportement semblable à SaveFileDialog.

    mercredi 19 octobre 2011 15:54
    Auteur de réponse
  • Bonjour, GraySky,

     

    Je considère que votre question a reçu déjà des réponses, donc svp ne les démarquez pas. Vous pouvez continuer la discussion même si les réponses sont marquées. Svp testez les solutions proposez et n’hésitez pas à revenir avec des questions si vous rencontrez des difficultés.

    Merci de votre compréhension et collaboration.

    Cordialement,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    jeudi 20 octobre 2011 06:31
  • Bonjour,

    J'ai tester les propositions , et ce là fonctionne.

    Celle de LINK.FR et de Mourad.

    Merci pour votre aide.

    jeudi 27 octobre 2011 12:05
  • Bonjour,

     

    Merci d’avoir partagé avec nous les resultats.

     

    Bonne journée,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    jeudi 27 octobre 2011 13:32