c # переименовать файл перед ftping - PullRequest
2 голосов
/ 22 ноября 2011

Как я могу переименовать файл во временную метку или случайное уникальное число до того, как он будет фактически передан на сервер?

пример: если я выберу C: \ taco.pdf ..... 1321981871.pdf на самом деле то, что будет ftp'd на сервер.

FileInfo toUpload = new FileInfo(this.txtFile.Text);

 FtpWebRequest request =
            (FtpWebRequest)WebRequest.Create(
            "ftp://192.168.0.186" + "/" + toUpload.Name
            );

 request.Method = WebRequestMethods.Ftp.UploadFile;

request.Credentials =
            new NetworkCredential("myuser","mypassword");

Stream ftpStream = request.GetRequestStream();
        FileStream file = File.OpenRead(this.txtFile.Text);

 int length = 1024;
        byte[] buffer = new byte[length];
        int bytesRead = 0;


        do
        {
            bytesRead = file.Read(buffer, 0, length);
            ftpStream.Write(buffer, 0, bytesRead);
        }
        while (bytesRead != 0);

 file.Close();
        ftpStream.Close();

Ответы [ 2 ]

4 голосов
/ 22 ноября 2011

Если вы хотите, чтобы файл выгружался с другим именем без локального переименования, не могли бы вы просто изменить

 FtpWebRequest request = 
            (FtpWebRequest)WebRequest.Create( 
            "ftp://192.168.0.186" + "/" + toUpload.Name 
            ); 

на

 FtpWebRequest request = 
            (FtpWebRequest)WebRequest.Create( 
            "ftp://192.168.0.186/whatever file name you want"); 

0 голосов
/ 22 ноября 2011

Использование FileInfo.MoveTo:

toUpload.MoveTo(newName);
...