+1 nom d'un fichier. [Résolu]

Messages postés
15
Date d'inscription
vendredi 21 décembre 2007
Dernière intervention
21 février 2009
- - Dernière réponse : cs_Cactuz
Messages postés
15
Date d'inscription
vendredi 21 décembre 2007
Dernière intervention
21 février 2009
- 28 nov. 2008 à 23:23
Bonsoir à tous les utilisateurs de CodeS SourceS.
 Je débute dans le C#, et je continue d'essayer de finir un programme:
  L'utilisateur remplie les champs du programme, ses données sont stockés dans un fichier txt, qui est en suite envoyé sur un FTP. Mais voilà, à chaque fois qu'un fichier est crée et uploadé il écrase son précedateur sur le FTP...
Pour contrer ceci, il faudrait ajouter à mon avis un nombre aléatoire à la fin du nom du fichier texte. Voici mon code, comment puis-je faire?

 public void button1_Click(object sender, EventArgs e)
        {
           
            string path = @"c:\fichier.txt";
            using (StreamWriter sw = File.CreateText(path))
            {
                sw.WriteLine(doc1.Text);
                sw.WriteLine(doc2.Text);
            }
     WebClient wc = new WebClient();
            wc.Credentials = new NetworkCredential(@"account", @"pass");
            wc.UploadFile(@"ftp:/hote/fichier.txt", WebRequestMethods.Ftp.UploadFile, @"C:\fichier.txt");
            wc.Dispose();
      }

Merci pour vos futures réponses.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
327
Date d'inscription
mardi 17 février 2004
Dernière intervention
10 avril 2010
3
Merci
Salut,

Essaye un truc comme ça.  Ca te crée un fichier avec la date du jour et l'heure (heure, minutes, secondes, millisecondes). Comme l'a dit SharpMao, il peut y avoir un problème si plusieurs personnes upload un fichier simultanément. Mais avec les millisecondes dans le nom du fichier, avec un peu de chance ça n'arrivera pas :)

string fileName = string.Format("fichier_{0}.txt", DateTime.Now.ToString("yyyyMMdd-HHmmss-FFF"));
            string localPath = string.Format(@"c:\{0}", fileName);
            string remotePath = string.Format(@"ftp:/hote/{0}", fileName);

            using (StreamWriter sw = File.CreateText(localPath))
            {
                sw.WriteLine(doc1.Text);
                sw.WriteLine(doc2.Text);
            }
            WebClient wc = new WebClient();
            wc.Credentials = new NetworkCredential(@"account", @"pass");
            wc.UploadFile(remotePath, WebRequestMethods.Ftp.UploadFile, localPath);
            wc.Dispose();

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de WishhhMaster
Messages postés
269
Date d'inscription
lundi 1 mars 2004
Dernière intervention
19 avril 2012
0
Merci
Salut, je n'y connais pas grand chose au niveau du FTP, mais une astuce du genre ne fonctionnerait-elle pas ?

// Récupère tous les fichiers présents sur le ftp
string[] files = Directory.GetFiles("ftp://hote//);

string path = @"c:\fichier.txt";

            using (StreamWriter sw = File.CreateText(path))
            {
                sw.WriteLine(doc1.Text);
                sw.WriteLine(doc2.Text);
            }

   // Construit le nom du fichier à uploader
   string filenameToUpload = string.Format("{0}//fichier{1}", @"ftp:/hote", files.Length + 1);

     WebClient wc = new WebClient();
            wc.Credentials = new NetworkCredential(@"account", @"pass");
            wc.UploadFile(filenameToUpload , WebRequestMethods.Ftp.UploadFile, @"C:\fichier.txt");
            wc.Dispose();
En espérant t'avoir aidé...
Commenter la réponse de MasterShadows
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
0
Merci
Hello,

Le problème de ta solution, MasterShadows, c'est que si des fichiers sont effacés, le nombre de fichiers sur le site ne correspond plus au numéro maximum des fichiers.

Je vois trois solutions :
- Récupérer les noms de fichiers sur le ftp, parcourir la liste et parser le numéro pour récupérer le plus grand.
- Mettre la date sous un certain format, par exemple yyyyMMdd-HHmmss-FFF. C'est simple, et ça permet de trier les fichiers facilement.
- Mettre un Guid dans le nom du fichier. C'est moche, mais si plusieurs personnes peuvent uploder des fichiers simultanément, c'est presque le seul moyen de garantir une unicité des nom de fichier.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Commenter la réponse de SharpMao
Messages postés
15
Date d'inscription
vendredi 21 décembre 2007
Dernière intervention
21 février 2009
0
Merci
Bonsoir, et merci pour vos réponses. Je pense m'orienter vers l'affichage de l'heure d'upload, ce qui me parrait le plus efficace.
Quelque chose comme cela: DateTime.Now.ToString("dd-MM-yyyy" );

Mais je bloque un peu pour la création du filename, je débute.
Commenter la réponse de cs_Cactuz
Messages postés
15
Date d'inscription
vendredi 21 décembre 2007
Dernière intervention
21 février 2009
0
Merci
Parfait, j'ai compris le fonctionnement. Merci à toi!
Commenter la réponse de cs_Cactuz

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.