عملیات FTP با استفاده از C#.NET

چهارشنبه 5 اسفند 1394

در این مقاله ، روش ارسال یک فایل از طریق FTP آموزش داده می شود. همچنین نویسنده توضیحاتی در مورد FTP و کاربرد های آن نیز بیان می کند.

 عملیات FTP  با استفاده از C#.NET

در این مقاله ، درباره ی عملیات  File Transfer Protocol ( پروتکل انتقال فایل ) با استفاده از C# .NET  به بحث می پردازیم.

مقدمه :

در این مقاله ، ما در مورد FTP  و چگونگی استفاده از آن با استفاده از C#.NET  می پردازیم. در این مقاله، ما یک FTP Client (کاربر FTP ) داریم که در حال تعامل و انجام عملیات بر روی سیستم FTP  است ، با استفاده از روشی که در این مقاله، بیان می شود ، ما می توانیم به راحتی یک فایل را از FTP  با استفاده از source code برداریم و یا یک فایل را بر روی FTP  قرار بدهیم. با استفاده از source code ، از انجام عملیات به صورت دستی نیز جلوگیری می شود. قبل از شروع کار ، باید کمی در مورد FTP و کاربرد آن ، مطالبی را بیان کنیم.

درباره ی FTP  :

Wikipedia اینطور بیان می کند:

" FTP  بر پایه ی یک مدل معماری client-server ساخته شده است و از کنترل ها و رابط های داده ای جداگانه بین کاربر و server استفاده می کند.کاربران FTP  ممکن است با استفاده از یک پروتکل (که فقط شامل متن ساده ای است ) ، به سیستم وارد شوند ، که معمولا این پروتکل به صورت "نام کاربری " (User Name)و "رمزعبور"(Password ) است، همچنین کاربران می توانند به صورت ناشناس نیز به سیستم وارد شوند. البته در صورتی این کار امکان پذیر است که سیستم ، اجازه ی ورود به افراد ناشناس را بدهد."

" برای نقل و انتقال به صورت امن که از "نام کاربری " و "رمزعبور" استفاده می کند، و محتویات را رمزنگاری می کند، FTP  اغلب از SSL/TLS (FTPS) استفاده می کند. پروتکل انتقال داده ی SSH (SFTP) هم گاهی اوقات مورد استفاده قرار می گیرد. این دو پروتکل از نظر نوع تکنولوژی هایشان با هم متفاوت هستند."

یک نمای مفهومی :

مرحله ی 1 : ایجاد یک ارتباط

در این مرحله ، ما یک ارتباط ایجاد می کنیم و می بینیم که چگونه باید آن را به برنامه ی خودمان وصل کنیم.

  
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://Hostname.com/");  
               request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;  
 
               // This example assumes the FTP site uses anonymous logon.  
               request.Credentials = new NetworkCredential("maruthi", "******");  
               request.KeepAlive = false;  
               request.UseBinary = true;  
               request.UsePassive = true;  

در اینجا به اضافه کردن یک NameSpace  احتیاج داریم که عبارت است از :

using System.Net;

مرحله ی 2 : چگونگی ارتباط

در این مرحله ما می توانیم رفتار های متعددی را برای ارتباط ، تعریف کنیم :

request.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.CacheIfAvailable);

مرحله ی 3 : محتویات را بخوانید

تکه کد زیر به شما کمک می کند تا محتویات را از فایل FTP  خودتان با روش کد زنی بخوانید.

try    
{    
// FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://Hostname.com/");    
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://Hostname.com/");    
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;    
    
               
request.Credentials = new NetworkCredential("maruthi", "******");    
request.KeepAlive = false;    
request.UseBinary = true;    
request.UsePassive = true;    
    
     
FtpWebResponse response = (FtpWebResponse)request.GetResponse();    
      
Stream responseStream = response.GetResponseStream();    
StreamReader reader = new StreamReader(responseStream);    
Console.WriteLine(reader.ReadToEnd());    
      
Console.WriteLine("Directory List Complete, status {0}", response.StatusDescription);    
      
reader.Close();    
response.Close();
                   
}    
catch (Exception ex)    
{    
Console.WriteLine(ex.Message.ToString());    
} 

این کد ، تمامی محتویات و مستندات درایو FTP  شما را نشان می دهد.

در تصویری که در زیر می بینید ، نحوه ی گرفتن یک تکه ی خاص از فایل نشان داده شده است.

try  
{  
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://Hostname.com/6.txt");  
    
request.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.CacheIfAvailable);  
    
request.Method = WebRequestMethods.Ftp.DownloadFile;  
    
request.Credentials = new NetworkCredential("maruthi", "******");  
    
request.KeepAlive = false;  
request.UseBinary = true;  
request.UsePassive = true;  
    
FtpWebResponse response = (FtpWebResponse)request.GetResponse();  
    
Stream responseStream = response.GetResponseStream();  
    
StreamReader reader = new StreamReader(responseStream);  
    
Console.WriteLine(reader.ReadToEnd());  
   
Console.WriteLine("Download Complete", response.StatusDescription);  
    
reader.Close();  
    
response.Close();  
}  
catch (WebException e)  
{  
Console.WriteLine(e.Message.ToString());  
String status = ((FtpWebResponse)e.Response).StatusDescription;  
Console.WriteLine(status);  
}  
catch(Exception ex)  
{  
Console.WriteLine(ex.Message.ToString());  
}

پاسخ برنامه

من قسمتی از کد برنامه را در فایل قرار دادم . به همین دلیل ، محتویات مطابق شکل بالا نمایش داده می شوند.

مرحله 4 : ارسال یک فایل

کد زیر به شما در فرستادن یک فایل به یک FTP location (مکان FTP ) کمک می کند.

public static void PostDatatoFTP(int i)  
       {  
           try  
           {  
               FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://Hostname.com"+@"\"+"TestFile0.txt");  
               request.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.CacheIfAvailable);  
               request.Method = WebRequestMethods.Ftp.UploadFile;  
               request.Credentials = new NetworkCredential("maruthi", "******");  
               // Copy the contents of the file to the request stream.  
               StreamReader sourceStream = new StreamReader(@"E:\yourlocation\SampleFile.txt");  
               byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());  
               sourceStream.Close();  
               request.ContentLength = fileContents.Length;  
               Stream requestStream = request.GetRequestStream();  
               requestStream.Write(fileContents, 0, fileContents.Length);  
               requestStream.Close();  
               FtpWebResponse response = (FtpWebResponse)request.GetResponse();  
               Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);  
  
               response.Close();  
           }  
           catch (WebException e)  
           {  
               Console.WriteLine(e.Message.ToString());  
               String status = ((FtpWebResponse)e.Response).StatusDescription;  
               Console.WriteLine(status);  
           }  
           catch(Exception ex)  
           {  
               Console.WriteLine(ex.Message.ToString());  
           }  
       }

   

بیایید تست کنیم و ببینیم فایل در محل موردنظر قرار گرفته است یا نه.

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://Hostname.com/TestFile.txt");   

تکه کد بالا برای خواندن تمام محتویات فایل استفاده می شود .

برنامه ی کنسول خودتون را اجرا کنید.

static void Main(string[] args)  
        {  
            Program.GetallContents();  
            Program.PostDatatoFTP(0);  
            Program.GetDataFromFTP();  
        }  

آموزش سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 4k بازدید
  • 5 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید