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 :

un moyen pour supprimer un fichier après l'avoir ouvert


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 81
    Points : 60
    Points
    60
    Par défaut un moyen pour supprimer un fichier après l'avoir ouvert
    Bonjour à tous,

    Alors voilà mon problème, j'aimerais pouvoir ouvrir un fichier quelconque mais pas directement depuis la source, j'aimerais le copier dans un dossier temporaire en local chez le client, puis le supprimer après la lecture.
    Le problème est que si je fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Diagnostics.Process.Start("C://Temp//" + bouton.CommandName);
    et ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     System.IO.File.Delete("C://Temp//" + bouton.CommandName);
    Le fichier n'a pas le temps de s'ouvrir qu'il a déjà été supprimé!

    voici mon code actuelle, le problème c'est que ça risque de prendre de la place pour rien après beaucoup d'ouverture de fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
          try
                {
                    // si le fichier existe, le supprimer du dossier Temp.
                    if(File.Exists("C://Temp//"+bouton.CommandName)){
                        System.IO.File.Delete("C://Temp//" + bouton.CommandName);
                    }
     
     
                    // copier le fichier dans un dossier Temp puis l'ouvrir.
                    System.IO.File.Copy(argument,"C://Temp//"+ bouton.CommandName);
                    System.Diagnostics.Process.Start("C://Temp//" + bouton.CommandName);
     
                }
    j'espère que j'ai été assez claire.

    Merci pour vos propositions.

  2. #2
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Tu peux créer un fichier temporaire directement, comme ça tu n'as pas à te soucier de la suppression.

    Le framework propose une méthode mais elle m'est sorti de la tête pour le moment.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 81
    Points : 60
    Points
    60
    Par défaut
    Salut laedit,

    merci pour ta réponse .

    J'ai fais un peu de recherches (google est mon ami) mais j'ai rien trouver de très convainquant.

    Les fichiers "temporaires" sont enfait tous simplement des fichiers genre .doc, .xls, .pdf, .jpg etc... Je les met en temporaire uniquement pour pas qu'ils puissent être modifier sur le serveur par inadvertance.

    Donc il faudrait que ce fichier "temporaire" puisse être utilisé pour à peu près n'importe quel type de fichier.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 81
    Points : 60
    Points
    60
    Par défaut
    Bon, après réflexion je me suis dis que je pourrais copier le fichier dans la mémoire RAM? Mais je ne crois pas que ça soit possible de gérer ça en C# et ça risque de causer plus de problèmes qu'autre chose.

    Quelqu'un aurait une idée?

    Merci pour vos propositions.

  5. #5
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Par fichier temporaire, j'entendais un fichier placé dans le dossier temp de windows.

    Tu peux soit récupérer le nom du dossier temporaire via Path.GetTempPah : http://msdn.microsoft.com/en-us/libr...ttemppath.aspx

    Ou générer un nom aléatoire de fichier temporaire via Path.GetTempFileName : http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 81
    Points : 60
    Points
    60
    Par défaut
    Merci beaucoup laedit!

    plus besoin de m'occuper de la suppression donc. C'est toute façon toujours le bordel dans les dossiers Temp de Windows.

    donc mon code maintenant donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
          try
                {
     
                    // si le fichier existe, le supprimer du dossier Temp.
                    if(File.Exists(Path.GetTempPath()+ bouton.CommandName)){
                        System.IO.File.Delete(Path.GetTempPath() + bouton.CommandName);
                    }
     
     
                    // copier le fichier dans un dossier Temp puis l'ouvrir.
                    System.IO.File.Copy(argument,Path.GetTempPath()+ bouton.CommandName);
                    System.Diagnostics.Process.Start(Path.GetTempPath() + bouton.CommandName);
     
                }
    Merci et bonne journée.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 166
    Points : 12 284
    Points
    12 284
    Par défaut
    Vous allez avoir des surprises dans pas longtemps.
    Si vous ne faite pas le ménage, vous allez avoir le disk plein.
    C'est pas parce qu’il y a des porcs qu'il ne faut pas faire les choses proprement.
    C'est simple, vous stockez dans un tableau le nom de tous les fichiers temporaire et dans le bloc finally, les supprimer.
    Ce n’est pourtant pas dur.

  8. #8
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    +1

    Et pour aller plus loin, avoir 4 fois le même code en 4 lignes de code...c'est mal, d'autant qu'il y'à une surcharge pour File.Copy...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try {
       string fileName= Path.GetTempPath()+ bouton.CommandName;
     
       System.IO.File.Copy(argument,fileName, true);
       System.Diagnostics.Process.Start(fileName);
    }catch(Exception ex){
    // blablabla
    }finally{
       System.IO.File.Delete(fileName);
    }

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 81
    Points : 60
    Points
    60
    Par défaut
    Salut à tous,

    Citation Envoyé par bacelar Voir le message
    Vous allez avoir des surprises dans pas longtemps.
    Si vous ne faite pas le ménage, vous allez avoir le disk plein.
    C'est vrai, le dossier Temp ne ce vide pas tout seul XD.

    Citation Envoyé par bacelar Voir le message
    C'est pas parce qu’il y a des porcs qu'il ne faut pas faire les choses proprement.
    Bien dit!

    Citation Envoyé par bacelar Voir le message
    C'est simple, vous stockez dans un tableau le nom de tous les fichiers temporaire et dans le bloc finally, les supprimer.
    Je ne comprends pas vraiment ce que tu veux dire. Copie le nom des fichiers dans un tableau? Et on les ouvre ou alors? Tu voulais pas plutôt dire l'intégrité du fichier?

    Bon il est vrai qu'elle est bien pourri la façon que j'utilisais. d'ailleurs je ne vais plus le faire comme ça.

    Merci pour vos solutions

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

Discussions similaires

  1. VBS - Permision refuser pour supprimer un fichier
    Par koKoTis dans le forum VBScript
    Réponses: 2
    Dernier message: 10/08/2006, 16h12
  2. Problème fonction UNLINK pour supprimer un fichier
    Par dolf13 dans le forum Langage
    Réponses: 3
    Dernier message: 21/07/2006, 22h59
  3. [TASM] Problème pour supprimer un fichier
    Par infoelectronique dans le forum Assembleur
    Réponses: 2
    Dernier message: 16/06/2006, 00h47
  4. Réponses: 45
    Dernier message: 04/05/2006, 01h10
  5. Réponses: 6
    Dernier message: 19/09/2005, 15h35

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