عملیات 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 تشکر