[b]ثامنا :- التعامل مع FTP من خلال الطلبات
[COLOR="#800000"]التعامل مع سيرفرات FTP مثله كمثل الويب العادي
ولكن بدل استخدام HttpWebReauset يتم استعمال
FtpWebRequset لهذا الغرض ، ويوجد برتوكولات
خاصة غير POST, GET ,HEAD ...etc[/COLOR]
--
البروتوكولات الموجودة للFtpWebRequset هي :
--
[COLOR="#2F4F4F"]وهذي class عملتها فيها اجرائات تستعمل طلبات ftp مثل Upload file , Download
سامحوني ردائة تصميم الكلاس فأنا كتبتها على السريع :[/COLOR]
--
وهذا المثال :
لاحظ انا عملت هوست ftp خاص عشان تجربو عليه
--
التحميل في المرفقات
--
{يتبع الجزء التاسع} >>>
[/b]
[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 { get; set; }
public FTPManger(string ftpHost, string username, string 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 = (FtpWebResponse) ftpReq.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 = 0; i < files.Length; i++)
{
if (files[i].Contains(":"))
{
string str = "";
for (int q = i + 1; q < files.Length; q++)
{
str += " " + files[q];
}
yield return str.Trim();
}
}
}
if (files[0] == FOLDER_PATTERN && mode == GetFileMode.Folder)
{
for (int i = 0; i < files.Length; i++)
{
if (files[i].Contains(":"))
{
string str = "";
for (int q = i + 1; q < files.Length; q++)
{
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(data, 0, data.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(localDestinationFilePath, FileMode.OpenOrCreate);
try
{
while (true)
{
bytesRead = reader.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
fileStream.Write(buffer, 0, bytesRead);
}
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 خاص عشان تجربو عليه
--
التحميل في المرفقات
--
{يتبع الجزء التاسع} >>>

