03-10-12, 02:14 PM
كاتب الموضوع : Islam Ibrahim
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
ارجوا من الادارة عدم غلق او حذف الموضوع بحجة انه مكرر لانه في النهايه لخدمة الاعضاء وللحفاظ علي الموضوع من الضياع.
كيف تصنع برنامج FTP في Vb.net
كاتب الدرس: احمد زكريا صالح(ahmed z s)
ما هو الاف تي بيبسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
ارجوا من الادارة عدم غلق او حذف الموضوع بحجة انه مكرر لانه في النهايه لخدمة الاعضاء وللحفاظ علي الموضوع من الضياع.
كيف تصنع برنامج FTP في Vb.net
كاتب الدرس: احمد زكريا صالح(ahmed z s)
الاف تي بي هو برنامج لتعامل مع الملفات التي موجودة في سيرفر موقعك
فكرة عمل البنامج
الفكرة هي انك سترسل طلب الي الاف تي بي سيرفر وبه ما طلبت وبعد ذلك
سيرد عليك الاف تي بي سيرفر بالاستجابه وبها المعلومات التي طلبتها او ينفذ ما طلبت
اكواد صناعة البرنامج مع الشرح
System.Net.WebRequest.Create - System.Net.FtpWebRequest
خاصة بارسال طلب الي السيرفر(موقع ال اف تي بي) بالتعامل مع ملف معين مثلا لتحميل او للحذف او لانشاء ملف جديد مثل عند الابلود اقتباس:[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]
Dim clsRequest As System.Net.FtpWebRequest = (System.Net.WebRequest.Create
("ftp://" & "مكان الملف الذي تريد التعامل معه"))
[/TD]("ftp://" & "مكان الملف الذي تريد التعامل معه"))
[/TR]
[/TABLE]
clsRequest.Credentials - System.Net.NetworkCredential
هذه التعبير خاص باعطاء بيانات سيرفر الاف تي بي الخاص بك (اسم المستخدم والباسورد)اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]clsRequest.Credentials = NewSystem.Net.NetworkCredential(‘User Name, Password)[/TD]
[/TR]
[/TABLE]
clsRequest.Method - System.Net.WebRequestMethods.Ftp
هذه الداله هي اهم دالة حيث انها هي التي ستحتوي الامر الذي تريد طلبة الي سييرفر الافتي بي[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]clsRequest.Credentials = NewSystem.Net.NetworkCredential(‘User Name, Password)[/TD]
[/TR]
[/TABLE]
clsRequest.Method - System.Net.WebRequestMethods.Ftp
واهم الدوالات التي موجوده بها
لحذف ملف DeleteFile
لتحميل ملف DownloadFile
لعمل قائمة بالملفات والمجلدات الموجوده ListDirectory
لرفع ملف UploadFile
لحذف مجلد RemoveDirectory
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]clsRequest.Method = System.Net.WebRequestMethods.Ftp.DeleteFile[/TD]
[/TR]
[/TABLE]
وبهذا الامر طلبنا حذف الملف الذي حددنا عندما ارسلنا الطلب بالاعلي
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]clsRequest.Method = System.Net.WebRequestMethods.Ftp.DeleteFile[/TD]
[/TR]
[/TABLE]
وبهذا الامر طلبنا حذف الملف الذي حددنا عندما ارسلنا الطلب بالاعلي
بعد ذلك نطلب من الاف تي بي سيرفر الاستجابة لما طلبنا
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Dim ftpWebResp As FtpWebResponse = clsRequest.GetResponse()[/TD]
[/TR]
[/TABLE]
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Dim ftpWebResp As FtpWebResponse = clsRequest.GetResponse()[/TD]
[/TR]
[/TABLE]
الي الان قد انتهينا من حذف الملف لاننا طلبنا شئ من السيرفر ولا نريد ان يرسل لنا السيرفر شئ مثل عند تحميل ملف او نرسل لسيرفر شئ عند الرفع. هذه الطريقة تكفي عند طلب مسح ملف او مجلد او صنع مجلد جديد
فاذا اردت ان تحذف مجلد مثلا تغير الميثود من DeleteFile الي RemoveDirectory مع تغيير مسار
المجلد الذي حددنا في اول الدرس مع Create
بعد ان ارسلنا الطلب الي سيرفر الاف تي بي سيرد هذا السيرفر بالستجابة والتي هي
عند طلب رفع ملف بالدالة UploadFile سنكتب هذا الكود بعد الكود الذي بالاعلي معدا كود طلب الستجابة لاننا سنرفع ملف (اي اننا سنرسل له بيانات) (ولا نحتاج اي بيانات من السيرفر مثل كود الدونلود)
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]
Dim Streamer As System.IO.Stream = clsRequest.GetRequestStream()
Dim bFile() As Byte = System.IO.File.ReadAllBytes("الملف الذي تريد التنزيل فيه مع الاسم
الذي تريد التنزيل به")
Streamer.Write(bFile, 0, bFile.Length
Streamer.Close()
Streamer.Dispose()
[/TD]Dim bFile() As Byte = System.IO.File.ReadAllBytes("الملف الذي تريد التنزيل فيه مع الاسم
الذي تريد التنزيل به")
Streamer.Write(bFile, 0, bFile.Length
Streamer.Close()
Streamer.Dispose()
[/TR]
[/TABLE]
عند طلب تنزيل ملف سنستخدم الدالة DownloadFile و سنكتب هذا الكود بعد الكود الذي بالاعلي(في هذه الدالة نحتاج البيانات من السيرفر)
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Dim streamer As Stream = ftpWebResp.GetResponseStream()
Using fs As New IO.FileStream("مكان الملف", FileMode.Create)
Dim buffer(2047) As Byte
Dim read As Integer = 0[/TD]
[/TR]
[/TABLE]
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Dim streamer As Stream = ftpWebResp.GetResponseStream()
Using fs As New IO.FileStream("مكان الملف", FileMode.Create)
Dim buffer(2047) As Byte
Dim read As Integer = 0[/TD]
[/TR]
[/TABLE]
الكود التالي سيظل يعمل Loop حتي يتم تجميع كل البيانات(Bytes)
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Do
read = streamer.Read(buffer, 0, buffer.Length)
fs.Write(buffer, 0, read)
Loop Until read = 0
fs.Flush()
fs.Close()
streamer.Close()
End Using[/TD]
[/TR]
[/TABLE]
عند طلب تجميع قائمة بالملفات والمجلدات الموجودة في السيرفر نستخدم الدالة ListDirectory سنكتب هذا الكود بعد الكود الذي بالاعلي(في هذه الدالة نحتاج البيانات من السيرفر مثل الدونلود)[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Do
read = streamer.Read(buffer, 0, buffer.Length)
fs.Write(buffer, 0, read)
Loop Until read = 0
fs.Flush()
fs.Close()
streamer.Close()
End Using[/TD]
[/TR]
[/TABLE]
Dim ftpWebResp As FtpWebResponse = clsRequest.GetResponse()
Dim streamer As Stream = ftpWebResp.GetResponseStream()
Dim reader As New StreamReader(streamer)
Dim LineRead As String
الكود التالي سيظل البرنامج يعمل loop حتي يتم تجميع كل الملفات والمجلدات في ListviewDim streamer As Stream = ftpWebResp.GetResponseStream()
Dim reader As New StreamReader(streamer)
Dim LineRead As String
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Do Until reader.EndOfStream
LineRead = reader.ReadLine
ListView1.Items.Add(LineRead)
Loop
streamer.Close()[/TD]
[/TR]
[/TABLE]
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Do Until reader.EndOfStream
LineRead = reader.ReadLine
ListView1.Items.Add(LineRead)
Loop
streamer.Close()[/TD]
[/TR]
[/TABLE]