+1 nom d'un fichier.

Résolu
cs_Cactuz Messages postés 15 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 21 février 2009 - 27 nov. 2008 à 21:07
cs_Cactuz Messages postés 15 Date d'inscription vendredi 21 décembre 2007 Statut Membre 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.

5 réponses

WishhhMaster Messages postés 327 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 10 avril 2010 8
28 nov. 2008 à 21:30
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();
3
MasterShadows Messages postés 268 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 19 avril 2012 12
27 nov. 2008 à 22:56
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é...
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
28 nov. 2008 à 07:53
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)
0
cs_Cactuz Messages postés 15 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 21 février 2009
28 nov. 2008 à 17:54
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Cactuz Messages postés 15 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 21 février 2009
28 nov. 2008 à 23:23
Parfait, j'ai compris le fonctionnement. Merci à toi!
0
Rejoignez-nous