گاهی اوقات نیاز هست که از طریق کد، فایل مورد نظر را روی سرور مجزا و با استفاده از اطلاعات ftp آپلود کنیم. در این مقاله، قطعه کدهای لازم برای انجام چنین کاری نوشته می شوند.
در ابتدا کدهای سمت html برای یک فایل آپلود و دکمه را قرار می دهیم:
  1. <asp:FileUpload ID="FileUpload1" runat="server" />  
  2. <asp:Button Text="Upload to FTP" runat="server" OnClick="FTPUpload" />  
  3. <hr />  
  4. <asp:Label ID="lblMessage" runat="server" />  
 سپس کدهای تابع کلیک روی دکمه را به این صورت می نویسیم:
  1. protected void FTPUpload(object sender, EventArgs e)  
  2. {  
  3.     //آدرس ftp server.  
  4.     string ftp = "ftp://yourserver.com/";  
  5.    
  6.     //آدرس پوشه ای که میخواهید فایل در آنجا آپلود شوند. برای روت خالی بذارید.  
  7.     string ftpFolder = "Uploads/";  
  8.    
  9.     byte[] fileBytes = null;  
  10.    
  11.     //Read the FileName and convert it to Byte array.  
  12.     string fileName = Path.GetFileName(FileUpload1.FileName);  
  13.     using (StreamReader fileStream = new StreamReader(FileUpload1.PostedFile.InputStream))  
  14.     {  
  15.         fileBytes = Encoding.UTF8.GetBytes(fileStream.ReadToEnd());  
  16.         fileStream.Close();  
  17.     }  
  18.    
  19.     try  
  20.     {  
  21.         //Create FTP Request.  
  22.         FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftp + ftpFolder + fileName);  
  23.         request.Method = WebRequestMethods.Ftp.UploadFile;  
  24.    
  25.        //Enter FTP Server credentials.  
  26.         request.Credentials = new NetworkCredential("UserName""Password");  
  27.         request.ContentLength = fileBytes.Length;  
  28.         request.UsePassive = true;  
  29.         request.UseBinary = true;  
  30.         request.ServicePoint.ConnectionLimit = fileBytes.Length;  
  31.         request.EnableSsl = false;  
  32.    
  33.         using (Stream requestStream = request.GetRequestStream())  
  34.         {  
  35.             requestStream.Write(fileBytes, 0, fileBytes.Length);  
  36.             requestStream.Close();  
  37.         }  
  38.    
  39.         FtpWebResponse response = (FtpWebResponse)request.GetResponse();  
  40.    
  41.         lblMessage.Text += fileName + " uploaded.<br />";  
  42.         response.Close();  
  43.     }  
  44.     catch (WebException ex)  
  45.     {  
  46.         throw new Exception((ex.Response as FtpWebResponse).StatusDescription);  
  47.     }  
  48. }  
 این nameSpace ها هم باید اضافه شوند:
  1. using System.IO;  
  2. using System.Net;  
  3. using System.Text;  
 تمام!