\ DriveHQ Customer Support Forum \
اقرأ/أجب : 103992/7
  • DriveHQSupport_
  • (676دعامات)
نموذج كود عميل FTP (كود مصدر C#): الاتصال بخادم FTP الخاص بـ DriveHQ

تساءل العديد من المستخدمين عن كيفية الاتصال بخادم FTP الخاص بـ DriveHQ في مشاريعهم البرمجية. في هذه الرسالة، نود أن نقدم بعض المعلومات العامة حول بروتوكول FTP أولاً، متبوعة ببعض أكواد C# المصدرية.

تقدم DriveHQ خدمة استضافة خوادم FTP. ندعم بروتوكولات FTP وFTPS الشائعة. من أهم مزايا خدمة FTP لدينا: تكاملها السلس مع خدماتنا السحابية الشاملة. يمكن للمستخدمين الوصول إلى ملفات FTP الخاصة بهم باستخدام متصفح الويب. محرك أقراص مُعيّن (WebDAV) أو برنامج عميل DriveHQ FileManager. كما يمكنهم استخدام أداة إدارة المجموعات عبر الإنترنت لإنشاء وإدارة مستخدمي FTP (المستخدمين الفرعيين).

يُعتبر بروتوكول FTP العادي غير آمن لأنه ينقل البيانات بدون تشفير. ولضمان أمان قوي باستخدام SSL، يمكنك استخدام FTPS (بروتوكول نقل الملفات عبر SSL/TLS). توجد طريقتان لتفعيل أمان SSL:

ضمني: يتصل عميل FTP مباشرة برقم منفذ FTPS خاص (الافتراضي هو 990)؛

صريح (FTPES): يتصل عميل FTP بمنفذ FTP العادي رقم 21، ثم يصدر الأمر STARTTLS لترقية الأمان.

يدعم خادم FTP الخاص بـ DriveHQ كلاً من بروتوكولي FTPS وFTPES. كما تدعم معظم تطبيقات عميل FTP كلا البروتوكولين، مثل FileZilla وCuteFTP وWsFTP وSmartFTP وWinSCP وFetch، وغيرها.

يوجد بروتوكول آخر لنقل الملفات الآمن يُسمى SFTP، والذي يُخلط غالبًا مع "بروتوكول نقل الملفات الآمن"؛ في الواقع، هو اختصار لـ "بروتوكول نقل الملفات عبر SSH"، وهو بروتوكول مختلف تمامًا. من وجهة نظر أمنية، يُعتبر كل من SSL/TLS وSSH متماثلين تقريبًا. من الواضح أن SSL/TLS أكثر شيوعًا من SSH. لا يدعم خادم FTP الخاص بـ DriveHQ بروتوكول SFTP لعدم وجود حاجة ماسة إليه.

وضع FTP النشط والسلبي:

قد يتضمن اتصال FTP قناتين TCP، قناة الأوامر وقناة البيانات. تُستخدم قناة الأوامر لإرسال أوامر FTP، بينما تُستخدم قناة البيانات لنقل كميات كبيرة من البيانات. يتطلب وضع FTP النشط من خادم FTP الاتصال بعميل FTP لإنشاء اتصال البيانات. يُعتبر هذا الوضع غير آمن في كثير من الأحيان، ويتم حظره بواسطة العديد من جدران الحماية وأجهزة التوجيه. أما وضع FTP السلبي، فيتطلب من عميل FTP الاتصال بخادم FTP عبر منفذ مختلف. يُعتبر هذا الوضع آمنًا ونادرًا ما يتم حظره. يدعم خادم FTP الخاص بـ DriveHQ كلا الوضعين النشط والسلبي. مع ذلك، إذا كان جهاز التوجيه/جدار الحماية أو برنامج الأمان الخاص بك يحظر وضع FTP النشط، فلن يعمل. ومن الجدير بالذكر أن معظم أجهزة التوجيه الحديثة تدعم وضع FTP النشط.

يرجى الملاحظة: لا يدعم عميل FTP الخاص بسطر الأوامر من مايكروسوفت بروتوكول FTP السلبي. بينما تدعم جميع برامج عملاء FTP الأخرى تقريبًا كلاً من بروتوكول FTP النشط والسلبي.

بروتوكول نقل الملفات (FTP) وبروتوكول نقل الملفات الاحترافي (ProFTP)

لدى DriveHQ موقعان لبروتوكول نقل الملفات (FTP)، أحدهما ftp.drivehq.com، وهو متاح لجميع المستخدمين؛ والآخر proftp.drivehq.com، وهو متاح للأعضاء المشتركين فقط (بما في ذلك المستخدمين الفرعيين لحساب المجموعة المشترك). ولأن proftp.drivehq.com متاح للأعضاء المشتركين فقط، فإنه لا يدعم بروتوكول نقل الملفات المجهول. لمزيد من المعلومات حول خدمة استضافة خادم FTP، يُرجى زيارة:

http://www.drivehq.com/servicemanual.aspx#_Toc265186728

 

نموذج لرمز مصدر عميل FTP

يُقدَّم كود المصدر التالي بلغة C# كما هو دون أي دعم. يمكنك استخدامه بحرية في برامجك الخاصة، أو إعادة توزيعه. يُوضِّح الكود النموذجي كيفية الاتصال بخادم FTP الخاص بنا وتنفيذ أوامر FTP، مثل LIST وGET وPUT؛ كما يُمكنك الاطلاع على كيفية ضبطه لاستخدام بروتوكول FTP السلبي وSSL.


باستخدام النظام؛
باستخدام System.Collections.Generic؛
باستخدام System.Linq؛
باستخدام System.Text؛
باستخدام System.Threading.Tasks؛
باستخدام System.Net؛
باستخدام System.IO؛
باستخدام System.Security.Cryptography.X509Certificates؛

/// <ملخص>
/// جميع الحقوق محفوظة © 2003-2016، شركة درايف هيدكوارترز. 
/// 
/// يوضح نموذج التعليمات البرمجية لعميل FTP كيفية الاتصال بخادم FTP الخاص بـ DriveHQ باستخدام لغة C#.
/// يمكنك استخدام الكود أو إعادة توزيعه مجانًا. يُقدَّم الكود كما هو، بدون أي رسوم إضافية 
/// لا يوجد أي دعم أو ضمان. لن تتحمل DriveHQ أي مسؤولية عن استخدام الكود.
///
مساحة الاسم FTPClientSample
{
    برنامج الفصل
    {
        static string ftpServer = "ftp.drivehq.com"; // يمكنك أيضًا استخدام proftp.drivehq.com إذا كان لديك حساب مدفوع.
        static string username = "YOUR_USERNAME"; // اسم المستخدم الخاص بك في DriveHQ
        static string password = "YOUR_PASSWORD"; // كلمة مرور DriveHQ الخاصة بك
        static void Main(string[] args)
        {
            // اعرض قائمة بالمجلدات على خادم FTP
            //قائمة("/")؛ 

            // قم بتنزيل ملف من خادم FTP
            //DownloadFile("ServerFileName.jpg", @"c:\temp\ClientFileName.jpg");

            // قم بتحميل ملف إلى خادم FTP
            UploadFile(@"c:\temp\ClientFileName.jpg", "/temp/ServerFileName.jpg");
        }


        /// <ملخص>
        /// قم بتحميل ملف إلى خادم FTP.
        ///
        /// مسار ملف محلي
        /// المسار على خادم FTP، مثل /temp/filename
        ///
        public static bool UploadFile(string srcFilePath, string destFilePath = null)
        {
            إذا كان (String.IsNullOrWhiteSpace(srcFilePath))
                throw new ArgumentNullException("مسار ملف المصدر.");

            إذا كان (String.IsNullOrWhiteSpace(destFilePath))
                destFilePath = Path.GetFileName(srcFilePath);

            Uri serverUri = GetUri(destFilePath);

            // يجب أن يبدأ عنوان الخادم (serverUri) بمخطط ftp://.
            إذا كان (serverUri.Scheme != Uri.UriSchemeFtp)
                أعد القيمة خطأ؛

            FtpWebRequest request = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.UploadFile);

            // قراءة محتوى الملف إلى مصفوفة بايت
            FileStream sourceStream = new FileStream(srcFilePath, FileMode.Open, FileAccess.Read);
            byte[] fileContent = new byte[sourceStream.Length];
            sourceStream.Read(fileContent, 0, fileContent.Length);
            sourceStream.Close();

            // أرسل محتوى الملف إلى خادم FTP
            request.ContentLength = fileContent.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContent, 0, fileContent.Length);
            requestStream.Close();

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            Console.WriteLine("حالة الاستجابة: {0} - {1}", response.StatusCode, response.StatusDescription);

            أعد القيمة true؛
        }

        /// <ملخص>
        /// قم بتنزيل ملف المصدر (srcFilePath) من خادم FTP إلى ملف الوجهة (destFilePath). إذا كان الملف فارغًا، فاحفظه في المجلد الحالي.
        ///
        ///
        ///
        ///
        public static bool DownloadFile(string srcFilePath, string destFilePath = null)
        {
            إذا كان (String.IsNullOrWhiteSpace(srcFilePath))
                throw new ArgumentNullException("مسار ملف المصدر.");

            إذا كان (String.IsNullOrWhiteSpace(destFilePath))
                destFilePath = Path.GetFileName(srcFilePath);

            Uri serverUri = GetUri(srcFilePath);

            //// يجب أن يبدأ عنوان الخادم (serverUri) بمخطط ftp://.
            إذا كان (serverUri.Scheme != Uri.UriSchemeFtp)
                أعد القيمة خطأ؛

            FtpWebRequest request = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.DownloadFile);

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();

            FileStream fileStream = new FileStream(destFilePath, FileMode.OpenOrCreate, FileAccess.Write);

            byte[] buffer = new byte[32 * 1024];

            بينما (صحيح) {
                int bytesRead = responseStream.Read(buffer, 0, buffer.Length);
                إذا كانت قيمة (bytesRead == 0)
                    استراحة؛

                fileStream.Write(buffer, 0, bytesRead);
            }
            fileStream.Close();

            Console.WriteLine("حالة الاستجابة: {0} - {1}", response.StatusCode, response.StatusDescription);

            أعد القيمة true؛
        }

        /// <ملخص>
        /// اعرض محتويات مجلد FTP
        ///
        ///
        ///
        public static string List(string path)
        {

            Uri serverUri = GetUri(path);

            //// يجب أن يبدأ عنوان الخادم (serverUri) بمخطط ftp://.
            إذا كان (serverUri.Scheme != Uri.UriSchemeFtp)
                يعود ""؛ 

            FtpWebRequest request = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.ListDirectory);

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            string result = sr.ReadToEnd();
            Console.WriteLine("حالة الاستجابة: {0} - {1}", response.StatusCode, response.StatusDescription + "\r\n" + result);

            أعد النتيجة؛
        }

        private static FtpWebRequest CreateFtpRequest(Uri serverUri, string method)
        {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
            request.EnableSsl = true;
            request.UsePassive = true;
            request.UseBinary = true;
            request.KeepAlive = true;
            request.Credentials = new NetworkCredential(username, password);
            request.Method = method;

            طلب الإرجاع؛
        }

        private static Uri GetUri(string remoteFilePath)
        {
            Uri ftpServerUri = new Uri("ftp://" + ftpServer);
            أعد كائن Uri جديدًا (ftpServerUri، remoteFilePath)؛
        }

    }
}
 

03/08/37 07:01:04 م

  • ajayreigns
  • (1دعامات)
موضوع: أحتاج إلى كود VB.NET لربط حساب Pro Drivehq
أحتاج إلى كود VB.NET لربط حساب Pro Drivehq

يرجى مشاركة كود Visual Basic .NET للاتصال بحساب PRO Drive hq


رد
19/02/38 12:25:49 ص

  • arsene16pcs017
  • (1دعامات)
موضوع: إعادة: نموذج كود عميل FTP (كود مصدر C#): الاتصال بخادم FTP الخاص بـ DriveHQ
إعادة: نموذج كود عميل FTP (كود مصدر C#): الاتصال بخادم FTP الخاص بـ DriveHQ

 مرحباً! لقد صممتُ مشروع موقعي الإلكتروني. هل يُمكنني الحصول على جميع الخطوات اللازمة لمشاركة ملفاتي (نصوص، فيديوهات، ملفات صوتية) على السحابة الإلكترونية ليتمكن الآخرون من الوصول إليها؟ أحتاج إلى شرحٍ وافٍ لكيفية تحميل وتنزيل الملفات على DriveHQ! شكرًا لكم


رد
28/04/39 10:32:28 م

  • DriveHQSupport_
  • (676دعامات)
موضوع: ردًا على: نموذج كود عميل FTP (كود مصدر C#): الاتصال بخادم FTP الخاص بـ DriveHQ

مستخدم: arsene16pcs017  -  28/04/39 10:32:28 م

إعادة: نموذج كود عميل FTP (كود مصدر C#): الاتصال بخادم FTP الخاص بـ DriveHQ

 مرحباً! لقد صممتُ مشروع موقعي الإلكتروني. هل يُمكنني الحصول على جميع الخطوات اللازمة لمشاركة ملفاتي (نصوص، فيديوهات، ملفات صوتية) على السحابة الإلكترونية ليتمكن الآخرون من الوصول إليها؟ أحتاج إلى شرحٍ وافٍ لكيفية تحميل وتنزيل الملفات على DriveHQ! شكرًا لكم

ردًا على: نموذج كود عميل FTP (كود مصدر C#): الاتصال بخادم FTP الخاص بـ DriveHQ

شكراً لتواصلكم معنا. 

ستجد إجابات لأي أسئلة أساسية تتعلق بالمشاركة/النشر في دليل الخدمة الخاص بنا: https://www.drivehq.com/ServiceManual.aspx. إذا كانت لديك أسئلة محددة، يرجى مراسلتنا عبر البريد الإلكتروني support@drivehq.com وسنبذل قصارى جهدنا لمساعدتك. 

 

شكرًا لك،
دعم DriveHQ


 


رد
29/04/39 08:32:57 ص

  • glorber
  • (1دعامات)
موضوع: إعادة: نموذج كود عميل FTP (كود مصدر C#): الاتصال بخادم FTP الخاص بـ DriveHQ
إعادة: نموذج كود عميل FTP (كود مصدر C#): الاتصال بخادم FTP الخاص بـ DriveHQ

أقوم بتطوير تطبيق لنظام iOS باستخدام لغة Swift. يقوم التطبيق بإنشاء ملف بيانات JSON أرغب في تحميله وتنزيله من التطبيق إلى DriveHQ والعكس صحيح.

هل يمكنك مشاركة نموذج كود Swift للاتصال بخادم FTP الخاص بـ DriveHQ؟

شكرًا لك.


رد
12/01/40 06:59:05 ص

  • stleojohn
  • (1دعامات)
موضوع: إعادة: نموذج كود عميل FTP (كود مصدر C#): الاتصال بخادم FTP الخاص بـ DriveHQ
إعادة: نموذج كود عميل FTP (كود مصدر C#): الاتصال بخادم FTP الخاص بـ DriveHQ

 أواجه خطأً غير معروف عند محاولة استخدام هذا الكود، أرجو المساعدة


رد
29/03/41 08:42:14 م

  • DriveHQ Support
  • (32دعامات)
موضوع: ردًا على: نموذج كود عميل FTP (كود مصدر C#): الاتصال بخادم FTP الخاص بـ DriveHQ

مستخدم: stleojohn  -  29/03/41 08:42:14 م

إعادة: نموذج كود عميل FTP (كود مصدر C#): الاتصال بخادم FTP الخاص بـ DriveHQ

 أواجه خطأً غير معروف عند محاولة استخدام هذا الكود، أرجو المساعدة

ردًا على: نموذج كود عميل FTP (كود مصدر C#): الاتصال بخادم FTP الخاص بـ DriveHQ

يرجى نشر مقتطف الشفرة البرمجية ورسالة الخطأ. يرجى أيضًا اختبارها على برنامج FileZilla للتأكد من أن شبكتك لا تحظر اتصال FTP.


رد
29/03/41 09:32:26 م

  • liveieee
  • (2دعامات)
موضوع: برنامج عميل FTP بلغة بايثون
برنامج عميل FTP بلغة بايثون

هل يمكنك مشاركة إصدار بايثون الخاص بـ drivehq


رد
05/05/41 04:28:41 ص

احفظ وشارك
الرد السريع

Leading Cloud Surveillance service

Leading Enterprise Cloud IT Service Since 2003