تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[سلسلة التعامل مع الويب] - ارسال الطلبات HttpWebRequset
#4
[b]ثامنا :- التعامل مع FTP من خلال الطلبات


[COLOR="#800000"]التعامل مع سيرفرات FTP مثله كمثل الويب العادي

ولكن بدل استخدام HttpWebReauset يتم استعمال

FtpWebRequset لهذا الغرض ، ويوجد برتوكولات

خاصة غير POST, GET ,HEAD ...etc[/COLOR]

--

البروتوكولات الموجودة للFtpWebRequset هي :



--

[COLOR="#2F4F4F"]وهذي class عملتها فيها اجرائات تستعمل طلبات ftp مثل Upload file , Download

سامحوني ردائة تصميم الكلاس فأنا كتبتها على السريع :[/COLOR]

PHP كود :
//All Copyright to Alshki LLah
    /// <summary>
    /// by this class you can use many function to manage your ftp host
    /// </summary>
    
class FTPManger
    
{
        const 
string FILE_PATTERN "-rw-r--r--";
        const 
string FOLDER_PATTERN "drwxr-xr-x";
        public 
string _host;
        
string _user_pass;
        
RichTextBox _statusTextBox null;


        
bool IsConnected getset; }

        public 
FTPManger(string ftpHoststring usernamestring password  RichTextBox statusTextBox)
        {
            
_host ftpHost;
            
_user username;
            
_pass password;
            
this._statusTextBox statusTextBox;

        }

        public 
enum GetFileMode
        
{
            
File,Folder
        
}

        
void setStatus(string text)
        {
            
_statusTextBox.Text += text;
            
_statusTextBox.SelectionStart _statusTextBox.Text.Length;
            
_statusTextBox.ScrollToCaret();
        }

        
#region "Getfiles"

        
public bool TryConnect()
        {
            
FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create(_host);
            
ftpReq.Credentials = new NetworkCredential(_user_pass);
            
ftpReq.Method WebRequestMethods.Ftp.ListDirectoryDetails;

            
FtpWebResponse response =null;
            try
            {
                
response = (FtpWebResponse)ftpReq.GetResponse();
                
Stream responseStream response.GetResponseStream();
                
StreamReader reader = new StreamReader(responseStream);


                
IsConnected true;
                
setStatus("\n" "Connected OK , status code : " response.StatusDescription);
                return 
true;
            }
            catch
            {
                
IsConnected false;
                
_statusTextBox.Text += "\n" "Error while connecting";
                return 
false;
            }
        }


        public 
void getAllFilesAndFolder(ListView filesList)
        {
            
filesList.Items.Clear();
            
//get file
            
foreach (string file in GetFiles(FTPManger.GetFileMode.File))
            {
                
filesList.Items.Add(file).SubItems.Add("File");
            }
            
//get folder
            
foreach (string folder in GetFiles(FTPManger.GetFileMode.Folder))
            {
                
filesList.Items.Add(folder).SubItems.Add("Folder");
            }
        }


        public 
IEnumerable GetFiles(GetFileMode mode)
        {
            
FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create(_host);
            
ftpReq.Credentials = new NetworkCredential(_user_pass);
            
ftpReq.Method WebRequestMethods.Ftp.ListDirectoryDetails;

            
FtpWebResponse response = (FtpWebResponseftpReq.GetResponse();
            
Stream responseStream response.GetResponseStream();
            
StreamReader reader = new StreamReader(responseStream);  

            while (!
reader.EndOfStream)
            {
                
string data reader.ReadLine();
                
string[] files data.Split(' ');

                
//اذا كان المحتوى الحالي عبارة عن ملف
                
if (files[0] == FILE_PATTERN && mode == GetFileMode.File)
                {
                    for (
int i 0files.Lengthi++)
                    {
                        if (
files[i].Contains(":"))
                        {
                            
string str "";
                            for (
int q 1files.Lengthq++)
                            {
                                
str += " " files[q];
                            }
                            yield return 
str.Trim();
                        }
                    }
                }

                if (
files[0] == FOLDER_PATTERN && mode == GetFileMode.Folder)
                {
                    for (
int i 0files.Lengthi++)
                    {
                        if (
files[i].Contains(":"))
                        {
                            
string str "";
                            for (
int q 1files.Lengthq++)
                            {
                                
str += " " files[q];
                            }
                            yield return 
str.Trim();
                        }
                    }
                }

            }
        }

        
#endregion

        #region "upload"

        
public void UploadFile(string FTPnewfileName ,string filePath)
        {
            if (
IsConnected)
            {
                
FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create(_host "/" FTPnewfileName);
                
ftpReq.Credentials = new NetworkCredential(_user_pass);
                
ftpReq.Method WebRequestMethods.Ftp.UploadFile;

                
byte[] data System.IO.File.ReadAllBytes(filePath);

                
ftpReq.ContentLength data.Length;
                
System.IO.Stream st ftpReq.GetRequestStream();
                
st.Write(data0data.Length);
                
st.Close();

                
FtpWebResponse response null;
                try
                {
                    
response = (FtpWebResponse)ftpReq.GetResponse();
                    
setStatus"\n\n\n" "Upload File Complete, status : " response.StatusDescription);
                }
                catch
                {
                    
setStatus"\n\n\n""Upload File Faild");
                }
            }
            else
            {
                
setStatus("\n\n\n"+"Not Connected!!");
            }
        }
        
#endregion

        #region "download"
        
public void DownloadFile(string ftpFilePath string localDestinationFilePath)
        {
            if (
IsConnected)
            {
                
int bytesRead 0;
                
byte[] buffer = new byte[999]; //مخزن البايت

                
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpFilePath);
                
request.Credentials = new NetworkCredential(_user_pass);
                
request.Method WebRequestMethods.Ftp.DownloadFile;

                
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                
Stream reader response.GetResponseStream();
                
FileStream fileStream = new FileStream(localDestinationFilePathFileMode.OpenOrCreate);

                try
                {
                    while (
true)
                    {
                        
bytesRead reader.Read(buffer0buffer.Length);

                        if (
bytesRead == 0)
                            break;

                        
fileStream.Write(buffer0bytesRead);
                    }
                    
fileStream.Close();
                    
setStatus"\n\n\n" "Downloaded Completed!!");
                }
                catch { 
setStatus"\n\n\n" "Download file filed"); }
            }
            else
            {
                
setStatus("Not Connected!!");
            }
        }
        
#endregion

        #region "delete folder"
        
public void DeleteFolder(string folderURL)
        {
            if (
IsConnected)
            {
                
FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create(folderURL);
                
ftpReq.Credentials = new NetworkCredential(_user_pass);
                
ftpReq.Method WebRequestMethods.Ftp.RemoveDirectory;
                
ftpReq.KeepAlive true;

                try
                {
                    
FtpWebResponse ftpRes = (FtpWebResponse)ftpReq.GetResponse();
                    
setStatus("\n\n\n" "Folder Deleted!!");
                }
                catch
                {
                    
setStatus("\n\n\n" "Cannot delete folder");
                }
            }
            else
            {
                
setStatus("\n\n\n" "Not Connected!!");
            }
        }

        
#endregion

        #region delete file


        
public void DeleteFile(string fileURL)
        {
            if (
IsConnected)
            {
                
FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create(fileURL);
                
ftpReq.Credentials = new NetworkCredential(_user_pass);
                
ftpReq.Method WebRequestMethods.Ftp.DeleteFile;

                try
                {
                    
FtpWebResponse response = (FtpWebResponse)ftpReq.GetResponse();
                    
setStatus("\n\n\n" "Deleting File Complete, status : " response.StatusDescription);
                }
                catch
                {
                    
setStatus"\n\n\n" "Cannot delete file");
                }

            }
            else
            {
                
setStatus("\n\n\n" "Not Connected!!");
            }
        }
        
#endregion

        #region rename file


        
public void renemeFile(string fileURL,string renemeTo)
        {
            if (
IsConnected)
            {
                
FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create(fileURL);
                
ftpReq.Credentials = new NetworkCredential(_user_pass);
                
ftpReq.Method WebRequestMethods.Ftp.Rename;
                
ftpReq.RenameTo renemeTo;

                try
                {
                    
FtpWebResponse response = (FtpWebResponse)ftpReq.GetResponse();
                    
setStatus("\n\n\n" "Renamed File Complete, status : " response.StatusDescription);
                }
                catch
                {
                    
setStatus("\n\n\n" "Cannot rename file");
                }

            }
            else
            {
                
setStatus("\n\n\n" "Not Connected!!");
            }
        }
        
#endregion

        #region "make folder"
        
public void MakeFolder(string folderURL)
        {
            if (
IsConnected)
            {
                
FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create(folderURL);
                
ftpReq.Credentials = new NetworkCredential(_user_pass);
                
ftpReq.Method WebRequestMethods.Ftp.MakeDirectory;

                try
                {
                    
FtpWebResponse response = (FtpWebResponse)ftpReq.GetResponse();
                    
setStatus("\n\n\n" "Folder created !!!, status : " response.StatusDescription);
                }
                catch
                {
                    
setStatus"\n\n\n" "Cannot create folder");
                }

            }
            else
            {
                
setStatus"\n\n\n" "Not Connected!!");
            }
        }

        
#endregion

    



--

وهذا المثال :




لاحظ انا عملت هوست ftp خاص عشان تجربو عليه



--

التحميل في المرفقات

--



{يتبع الجزء التاسع} >>>

[/b]


الملفات المرفقة
.zip   FTP requset.zip (الحجم : 108.84 ك ب / التحميلات : 89)
الرد }}}
تم الشكر بواسطة: السندبااد , السندبااد , أسامة , Fantastico , invocker


الردود في هذا الموضوع
[سلسلة التعامل مع الويب] - ارسال الطلبات HttpWebRequset - بواسطة الشاكي لله_mybb_import4784 - 06-08-13, 01:38 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سلسلة ادوات المبرمج] {1} - اداة مراقبة الريجستري RegFromApp الشاكي لله 2 5,472 15-09-24, 11:36 AM
آخر رد: بوحمد
  [سلسلة التحكم] {4} - التحكم عن بعد بواسطة خدمة الويب الشاكي لله 7 10,120 12-07-21, 02:34 PM
آخر رد: devante.celvin
  [سلسلة التحكم] {5} - التحكم بالمصباح بواسطة الـ USB و Arduino الشاكي لله 12 25,953 30-12-19, 01:38 AM
آخر رد: mohammed abdalsamed
  [سلسلة التحكم] {3} - خدمة الويب (Web Service) الشاكي لله 9 13,390 25-09-19, 05:47 PM
آخر رد: al9atl
  تجميعية مقالات [سلسلة التحكم] الشاكي لله 10 8,110 15-07-19, 09:14 AM
آخر رد: mrsalnet
  التعامل مع ملفات xml بلغتي C#&VB Sajad 7 14,606 08-11-17, 10:21 AM
آخر رد: nani49
  [C#.NET] سلسلة حلقات نضف كودك Devahmedsalim 1 2,893 10-10-17, 11:28 PM
آخر رد: nani49
  [سلسلة ادوات المبرمج] {2} - اداة تحليل صفحات الويب HAPXPathFinder الشاكي لله 10 9,051 30-08-17, 06:49 PM
آخر رد: ابو روضة
  [سلسلة التحكم] {2} - التحكم بواسطة Remoting الشاكي لله 8 10,955 06-12-16, 04:22 PM
آخر رد: الشاكي لله
  [سلسلة التعامل مع الويب] تحليل الصفحات باستخدام HtmlAgilityPack الشاكي لله 9 7,474 25-09-16, 12:19 PM
آخر رد: ابراهيم كركوكي

التنقل السريع :


يقوم بقرائة الموضوع: