Wednesday, May 23, 2007

Using FtpWebRequest & FtpWebResponse to Upload File

Uri FtpHost = new Uri("ftp://127.0.0.1/wrar351.exe"); //Have to include destination filename in Uri()

FtpWebRequest ftprq;

FtpWebResponse ftprp;

string FtpFileName=@"c:\wrar351.exe"; //upload a WinRar self-install file

 

ftprq = (FtpWebRequest)WebRequest.Create(FtpHost);

ftprq.EnableSsl = false;

ftprq.UseBinary = true;

ftprq.UsePassive = false;

ftprq.Method = WebRequestMethods.Ftp.UploadFile;

ftprq.Credentials = new NetworkCredential("username", "password");

 

Stream RequestStream = ftprq.GetRequestStream();

Console.WriteLine("Put file:" + FtpFileName);

using (FileStream fs = new FileStream(FtpFileName, FileMode.Open))

{

    byte[] buf = new byte[4096];

    int readcount = 0;

 

    while ((readcount = fs.Read(buf, 0, 4096)) != 0)

    {

        RequestStream.Write(buf, 0, readcount);

        Console.Write("*");

    }

}

RequestStream.Close();

ftprp = (FtpWebResponse)ftprq.GetResponse();

 

if (ftprp.StatusCode != FtpStatusCode.ClosingData) //upload complete status is Closing Data

{

    throw new IOException("Ftp upload Error: " + ftprp.StatusCode.ToString() + ftprp.StatusDescription);

}

Console.Write("\nFile Upload OK\n");

ftprp.Close();

return;

No comments: