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 :

[C#] creer un fichier texte sur le disque de l'utilisateur


Sujet :

ASP.NET

  1. #1
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut [C#] creer un fichier texte sur le disque de l'utilisateur
    salut!
    Je suis en train de creer une appli web. Sur une de mes pages aspx, j'ai un bouton qui doit permettre de remplir un fichier texte avec des données. voila 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
     
    		private void newFichier()
    		{
    			FileInfo fichier = new FileInfo("C:/Inetpub/wwwroot/zeHelpDeskProject/FICHIER/log.txt");
     
    			// on efface l'ancien et on en créer un nouveau
    			if (fichier.Exists)
    				fichier.Delete();
    			fichier.Create();
    		}
     
     
    private void ecrireFichier(int i)
    {
         FileInfo fichier = new FileInfo("C:/Inetpub/wwwroot/zeHelpDeskProject/FICHIER/log.txt");
         StreamWriter sw = new StreamWriter("C:/Inetpub/wwwroot/zeHelpDeskProject/FICHIER/log.txt", true, System.Text.Encoding.ASCII); 
         sw.Writeline("coucou");
         sw.Close();
    }
    1 - comment eviter d'ecrire tous le chemin d'acces? Car pour l'instant je suis en locale, mais apres je vais devoir le mettre sur un serveur...
    2 - j'ai un probleme avec les droits d'acces, si le fichier existe deja, je peux le supprimer, mais apres, je ne peux le creer. Si je zap cette fonction (celle qui s'appelle newFichier), j'arrive bien a ecrire dedans. Mais comme le contenu peut varier suivant les données, j'ai besoin de le réinitialiser a chaque fois.

    Vous comprenez? Sinon, je réexplique pour ceux du fond...

    EDIT: je change le titre du sujet "probleme creation de fichier texte" -> "creer un fichier texte sur le disque de l'utilisateur"

  2. #2
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 97
    Points : 91
    Points
    91
    Par défaut
    1 -> tu crées un attribut dans ta classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected String path = "C:/Inetpub/wwwroot/zeHelpDeskProject/FICHIER/"
    etcomme ça dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void ecrireFichier(int i) 
    { 
         FileInfo fichier = new FileInfo(path+"log.txt"); 
         StreamWriter sw = new StreamWriter(path+"log.txt", true, System.Text.Encoding.ASCII); 
         sw.Writeline("coucou"); 
         sw.Close(); 
    }

    Magique non ??
    Y en a qui me font peur quand ils codent lol

  3. #3
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    ben ca change quoi?
    quand je vais balancer mon site sur le server intranet, ca va pas marcher, si? il pas demander ou se trouve "c:/inetpub/etc..."??
    Et sinon, pour la creation du fichier texte, t'as une idée? parce que j'ai fait clic droit sur le dossier -> securité -> tout le monde -> controle total -> et ca change rien

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Pour toutes les constantes d'une appli Web il y a un supergénialfichier qui s'appelle le web.config
    voir la faq ASP.Net
    Sinon je te conseille de travailler directement avec un Filestream plutôt que FileInfo; il me semble qu'il y a 9 surcharge de constructeurs possibles avec FileStream dont une qui devrait t'interresser
    Constructeur FileStream (String, FileMode, FileAccess, FileShare)
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    ok merci je vais jeter un coup d'oeil.
    Mais en fait, je viens de penser a un truc. Mon fichier texte, il faudrait qu'il soit créé sur le disque de l'utilisateur, genre dans les fichiers temporaires d'internet, parce que si plusieurs personnes vont sur le site en emem temps, ca va créer un probleme, non?

    C'est possible ca?

  6. #6
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    J'ai dû faire une appli de cette sorte, j'avais une classe metier qui gérer le repertoire des utilisateurs sur le serveur avec de l'archivage et tout et tout, donc pas d'accès concurrentiel puisque chacun son repertoire et ses données, une bddsqlserver était utilisé regulièrement pour mettre à jour les données et ma classe faisait le ménage ensuite
    C'est du boulot
    sinon je vois pas comment tu peux obtenir l'accès en ecriture et lecture côté client par le web
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  7. #7
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    bon bon bon...

    ca me parait bien compliqué juste pour ce que je veux faire. Je crois que je vais plutot créer une page html toute conne, et mettre mon texte dedans, le tout avec un petit bouton print...!

    Heu... le code pour mettre du texte dans une page html, c'est bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.Write(<body> mon texte </body>);
    parce que je suis un peu une quiche en html...

    Bon sinon, c'est pas grave, je chercherai... MERCI

  8. #8
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par neguib
    sinon je vois pas comment tu peux obtenir l'accès en ecriture et lecture côté client par le web
    je viens de penser a un truc: quand tu crées un cookie, tu fais bien de l'ecriture sur le disque du gars, non? C'est pas possible de faire la meme chose tu penses?

  9. #9
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Je crois que le cookie, c'est l'exception, normalement tu ne peux pas ecrire sur le disque d'un utilisateur (imagine le problème de sécurité).

    Ce que je te conseille, c'est de créer le fichier dans un répertoire spécial de ton site en le nommant avec le numéro de session du client. ainsi, aucun risque de confusion.

  10. #10
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    ouai mais le probleme c'est que si il y a 100 personnes qui se connectent en meme temps (bon je sais ca arrivera jamais dans la pratique...), ils vont créer 100 fichiers!!

    Non, en fait je vais faire un petit ".htm", que je vais remplir dynamiquement depuis le code behind...
    Je sais c'est pas terrible parce que je n'ai fait que contourner le probleme, mais si c'est plus simple

    bon, c'est parti pour une recherche sur ce probleme...

  11. #11
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par NicoNGRI
    Je crois que le cookie, c'est l'exception, normalement tu ne peux pas ecrire sur le disque d'un utilisateur (imagine le problème de sécurité).Ce que je te conseille, c'est de créer le fichier dans un répertoire spécial de ton site en le nommant avec le numéro de session du client. ainsi, aucun risque de confusion.
    Et voilà , je ne suis pas le seul à t'orienter vers çà
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  12. #12
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Tu sais, si dans ton code tu fais en sorte de supprimer le fichier lorsqu"il a été téléchargé, tu ne vas pas du tout saturer ton espace disque.

    Moi j'utilise cette methode pour exporter des Crystal report en PDF, j'ai aucun problème...

  13. #13
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    bon bon
    Je vais essayer ca alors parce que j'ai pas trouvé comment on fait pour ecrire dans une page htm depuis le code behind d'une autre page...

  14. #14
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par shams
    bon bon
    Je vais essayer ca alors parce que j'ai pas trouvé comment on fait pour ecrire dans une page htm depuis le code behind d'une autre page...
    Ben théoriquement çà devrait être faisable mais je te dis pas l'embrouille et les complications pour y arriver
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  15. #15
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 83
    Points : 100
    Points
    100
    Par défaut
    je viens de penser a un truc: quand tu crées un cookie, tu fais bien de l'ecriture sur le disque du gars, non?
    Accessoirement, non : ce n'est pas ton appli qui écrit le cookie sur le disque, c'est le navigateur du client qui utilise cette méthode pour gérer la persistance de son cache de cookies.
    De la même façon, le navigateur peut stocker sur le disque les pages reçues comme fichiers temporaires, pour autant ce n'est pas ton appli qui écrit sur le disque : c'est une gestion de la part du navigateur du client, sur laquelle tu n'as aucun prise.

  16. #16
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par Wyatan
    [...] sur laquelle tu n'as aucun prise.
    bon ben voila, comme ca c'est claire! J'ai fait la methode ou on ecrit un fichier dans un repertoire speciale, avec comme nom du fichier "log_nom-de-l'utilisateur.txt". Je l'efface des que je n'en ai plus besoin...

    J'ai juste un probleme, il arrive a le créer, c'est bon, mais pour ecrire, il me dit
    ce ficher est utilisé par un autre processus
    donc si quelqu'un a une idée...

    EDIT: la ligne de code qui pose probleme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StreamWriter sw = new StreamWriter(nomfichier, true, System.Text.Encoding.ASCII);
    et l'erreur exacte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.IO.IOException: Le processus ne peut pas accéder au fichier "C:\Inetpub\wwwroot\zeHelpDeskProject\FICHIER\log_shams.txt", car il est en cours d'utilisation par un autre processus

  17. #17
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Je pense que le Processus en question doit être celui qui a créé le fichier, il a toujours la main dessus.
    Donc soit tu lui fait relacher le fichier et ensuite avec un autre tu écris dedans, soit tu écris dedans avec le même processus.

  18. #18
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par NicoNGRI
    Donc soit tu lui fait relacher le fichier et ensuite avec un autre tu écris dedans, soit tu écris dedans avec le même processus.
    heu... tu sais comment on fait ca, svp?

  19. #19
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Tu peux nous montrer ton code ?

  20. #20
    Membre régulier Avatar de shams
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 210
    Points : 83
    Points
    83
    Par défaut
    le code du bouton pour l'impression (bouton generé dynamiquement, il se trouve dans une table, elle meme generé dynamiquement)
    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
    		private void ButtonImprim_Click(object sender, System.EventArgs e)
    		{				
    			// recuperation du dataset et du dataAdapter
    			System.Data.DataSet dataset = (System.Data.DataSet) Session["dataset"];
    			string nomfichier = "C:/Inetpub/wwwroot/zeHelpDeskProject/FICHIER/log_" + Session["user"].ToString() + ".txt";
     
    			FileInfo fichier = new FileInfo(nomfichier);
     
    			// on efface l'ancien et on en créer un nouveau
    			if (fichier.Exists)
    				fichier.Delete();
    			fichier.Create();
     
    			Table temp = new Table();
    			CheckBox tmp = new CheckBox();
     
    			for (int i=dataset.Tables["resume"].Rows.Count-1 ; i>=0 ; i--)
    			{
    				temp = (Table) Session[i.ToString()];
    				string id = "imprim"+i.ToString();
    				tmp = (CheckBox)temp.FindControl(id);
    				if (tmp.Checked)
    				{
    					ecrireFichier(i, nomfichier);
    				}
    			}
    			Response.Redirect("FICHIER/log_" + Session["user"].ToString() + ".txt");
    		}
    et le code pour ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
          private void ecrireFichier(int i, string nomfichier)
    		{
    			// recuperation du dataset
    			System.Data.DataSet dataset = (System.Data.DataSet) Session["dataset"];
     
    			// on ecrit
    			StreamWriter sw = new StreamWriter(nomfichier, true, System.Text.Encoding.ASCII); 
    			sw.WriteLine("\n\nRESUME DE LA DEMANDE NUMERO " + i.ToString());
    	     sw.Close();
    		}

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Applet] Effacer le contenu d'un fichier texte sur disque dur
    Par poulette3000 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 31/07/2007, 09h39
  2. [Fichier] Créer un fichier temporaire sur un serveur FTP
    Par kevFrance dans le forum Entrée/Sortie
    Réponses: 15
    Dernier message: 06/03/2006, 10h39
  3. Réponses: 6
    Dernier message: 23/02/2006, 12h09
  4. Réponses: 3
    Dernier message: 05/12/2005, 14h17
  5. Envoyer un fichier texte sur un port IP ?
    Par jnc dans le forum Web & réseau
    Réponses: 4
    Dernier message: 19/07/2005, 11h01

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