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 :

[VB.Net][2.0] Comment supprimer un fichier sur le client après envoi au serveur ?


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Points : 11
    Points
    11
    Par défaut [VB.Net][2.0] Comment supprimer un fichier sur le client après envoi au serveur ?
    Bonjour tous le monde,

    J'ai un petit souci avec l'exportation d'un fichier excel vers le client.

    Je vous explique le cheminement de ma page. C'est une page de recher dans l'annuaire de la société. J'affiche les résultats de la recherche dans un datagrid.
    A ce moment j'ai la possibilité d'imprimer ou d'exporter les résultats vers Excel.

    Mon problème concerne l'exportation vers Excel (j'ai pas encore attaqué l'impression )
    Je dois créer un fichier excel sur le serveur (crypté de telle sorte que quand on essaye de l'ouvrir avec le bloc note on obtient de très jolis hiéroglyphes), l'envoyer au client puis supprimer ce fichier.
    Je sais c'est compliqué mais c'est ce qui m'a été demandé.

    Ce qui m'embète c'est la suppression, elle s'effectue avant que le client n'est télécharger le fichier.
    Vu que mes explications ont l'air un peu brouillon je vous mets mon code


    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
        Protected Sub BtExport_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles BtExport.Click
            Dim ds As Data.DataSet
            Dim xlApp As Excel.Application
            Dim xlBook As Excel.Workbook
            Dim xlSheet As Excel.Worksheet
            Dim oRow As Data.DataRow
            Dim oCol As Data.DataColumn
            Dim nCol As Integer = 0
            Dim nRow As Integer = 1
            'Dim i As Integer
     
            'Recuperation du datagrid
            ds = Session("dsAnnuaire")
     
            'Generation du fichier excel
            xlApp = New Excel.Application
            xlApp.Visible = False
            xlBook = xlApp.Workbooks.Add
            xlSheet = xlApp.Sheets(1)
     
            'Ecriture du nom des colonnes
            For Each oCol In ds.Tables(0).Columns
                If oCol.ColumnName <> "PHOTO" And oCol.ColumnName <> "PHOTOALT" Then
                    nCol += 1
                    xlSheet.Cells(1, nCol) = oCol.ColumnName
                End If
            Next oCol
     
            'Ecriture des données du datagrid dans les colonnes
            For Each oRow In ds.Tables(0).Rows
                nCol = 0
                nRow += 1
                For Each oCol In ds.Tables(0).Columns
                    If oCol.ColumnName <> "PHOTO" And oCol.ColumnName <> "PHOTOALT" Then
                        nCol += 1
                        xlSheet.Cells(nRow, nCol) = oRow(oCol.ColumnName).ToString()
                    End If
                Next oCol
            Next oRow
     
            'Sauvegarde du fichier Excel
            xlSheet.SaveAs(Server.MapPath("Template") + "\" + Session("matricule") + ".xls")
     
            'Fermeture de l'application Excel
            xlSheet = Nothing
            xlBook = Nothing
            If Not IsNothing(xlApp) Then
                xlApp.Quit()
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
                xlApp = Nothing
            End If
     
            'Envoie du fichier au client
            Response.Clear()
            Response.ContentType = "application/x-msexcel"
            Response.AddHeader("Content-Disposition", "inline; filename=Annuaire.xls")
            'Response.WriteFile(Server.MapPath("Template") + "\" + Session("matricule") + ".xls")
            Response.TransmitFile(Server.MapPath("Template") + "\" + Session("matricule") + ".xls")
     
            'Delete du fichier sur le serveur 
            System.IO.File.Delete(Server.MapPath("Template") + "\" + Session("matricule") + ".xls")
        End Sub
    Voilà comme ça ce sera peut-être plus clair.
    Donc le fichier s'efface du serveur avant que le navigateur lui ai proposé de le récupérer sur son poste. Je suis sur que ca vient de là car si j'enléve le Delete du fichier, le Download s'effectue sans problème et le fichier Excel généré est exactement ce que je veux.

    Si quelqu'un pouvait m'aider ou aurait une autre méthode à me proposer ça m'aiderai grandement.

    Merci d'avance à tous et bon code

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Pour ce problème je suis preneur aussi

  3. #3
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    ce comportement est normal car tout est dans le même processus. c-a-d que tout le code est interprété à la suite.
    En fait, il faut que tu fasse en dezux temps :
    1) envoi au client
    2) suppression.

    Mais cooment faire pour savoir si l'envoi est termoiné ?
    Ben ya pas trop de solution, à part demander une action du client (supprimer) ou mettre un "timer" pour la suppression.
    Je vois pas d'autres solution là à chaud

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Ok merci pour l'info.
    Demander une action au client je préfère pas. Je vois déjà les problèmes avec les users qui comprennent pas pourquoi on leur demande de supprimer un fichier alors qu'ils viennent juste de le récupérer. Ils vont être paumés

    Je vais essayer de trouver une combine pour régler ce souci.

    En tout cas merci pour ton aide guitoux1

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    J'ai trouvé !!!!!

    Pour info je vous donne le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     'Envoie du fichier au client
                    Response.Clear()
                    Response.ContentType = "application/x-msexcel"
                    Response.AddHeader("Content-Disposition", "inline; filename=Annuaire.xls")
                    Response.WriteFile(Server.MapPath("Template") + "\" + Session("matricule") + ".xls")
                    Response.Flush()
                    Response.Close()
     
                    'Delete du fichier sur le serveur 
                    System.IO.File.Delete(Server.MapPath("Template") + "\" + Session("matricule") + ".xls")

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

Discussions similaires

  1. [VB.NET] Comment supprimer un fichier qui est utilisé ?
    Par Toon94 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/06/2010, 12h59
  2. Réponses: 7
    Dernier message: 17/04/2009, 16h54
  3. Comment supprimer un fichier sur un serveur
    Par visqueu dans le forum Langage
    Réponses: 1
    Dernier message: 02/04/2007, 02h47
  4. Réponses: 7
    Dernier message: 18/01/2007, 15h59
  5. Comment supprimer des fichiers en nombre ?
    Par Didier L dans le forum API, COM et SDKs
    Réponses: 13
    Dernier message: 25/01/2005, 16h01

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