عملیات FTP با استفاده از C#.NET
چهارشنبه 5 اسفند 1394در این مقاله ، روش ارسال یک فایل از طریق FTP آموزش داده می شود. همچنین نویسنده توضیحاتی در مورد FTP و کاربرد های آن نیز بیان می کند.
در این مقاله ، درباره ی عملیات 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();
}
- C#.net
- 4k بازدید
- 5 تشکر