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

cs_Cactuz 15 Messages postés vendredi 21 décembre 2007Date d'inscription 21 février 2009 Dernière intervention - 27 nov. 2008 à 21:07 - Dernière réponse : cs_Cactuz 15 Messages postés vendredi 21 décembre 2007Date d'inscription 21 février 2009 Dernière intervention
- 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
WishhhMaster 327 Messages postés mardi 17 février 2004Date d'inscription 10 avril 2010 Dernière intervention - 28 nov. 2008 à 21:30
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();

Merci WishhhMaster 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de WishhhMaster
MasterShadows 269 Messages postés lundi 1 mars 2004Date d'inscription 19 avril 2012 Dernière intervention - 27 nov. 2008 à 22:56
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
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 28 nov. 2008 à 07:53
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
cs_Cactuz 15 Messages postés vendredi 21 décembre 2007Date d'inscription 21 février 2009 Dernière intervention - 28 nov. 2008 à 17:54
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
cs_Cactuz 15 Messages postés vendredi 21 décembre 2007Date d'inscription 21 février 2009 Dernière intervention - 28 nov. 2008 à 23:23
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.