تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
نظرة على DropBox SDK و التعامل معها +برنامج رفع و تحميل ملفات
#1
التعامل مع DropBox Api - تحديداً  DropBox SDK  V2


بسم الله الرحمن الرحيم و الصلاة و السلام على سيدنا محمد و على آله و صحبه اجمعين
السلام عليكم و رحمة الله و بركاته
---------------------------------------------
يعد موقع DropBox مقصداً للكثير من المطورين لسهولة التعامل معه في رفع و تحميل الملفات.
و نظراً لاننا نتعامل معه بطريقة او باخرى من خلال برامجنا , ولاننا نفتقد لاي مصدر عربي يسهل علينا التعامل مع Api الخاص بالموقع,
لما يوفره من سهولة في التعامل و يفتح لنا ابواب اوسع لمعالجة امور كنا بحاجتها دوماً.
--------------------------------------------
فقد قررت كتابة هذه المقال لسببين :
الاول : هو اضاءة على الـ Api الخاص بهم للاستفادة منه في برامجنا.
الثاني : ايجاد طريقة اكثر تفاعلاً مع تحميل الملفات للاخوة الذين يتعاملون مع الموقع لتحديث برامجهم.
-------------------------------------------
في البداية ننشئ برنامج و من ثم نقوم  بتحميل المكتبة لبرنامجنا عبر Manage NuGet Packages 





بعد التحميل وفق الصور السابقة ننتقل الى الفورم الرئيسي لدينا .
فكرة البرنامج هو التعامل مع المكتبة وفق مسارين
1- رفع ملفات الى مساحتنا على الموقع.
2- تحميل ملفات من مساحتنا في الموقع.

سندخل الى الموقع اولاً و ننشئ بداخل المساحة مجلد لنرفع بداخله ملفاتنا.
من الجيد اذا كنت ممن لديه عدة برامج و رغبت ان يكون لكل برنامج مجلد خاص ترفع له ملفاتك , ان تنشأ مجلد خاص بكل برنامج.
نبقى مع الصور




سنستخدم المجلد Folder1 لنرفع اليه ملفاتنا كتجربة.

للتعامل مع المكتبة من خلال برنامجك يجب ان تمتلك حق الولوج الى Api الخاص بالموقع لذا يجب عليك ان تمتلك Access Token
سنتعرف الى طريقة انشائها عبر الموقع بخطوات بسيطة عبر الصور.


















الان و بعد ان تحصلت على Access Token  انسخه و احتفظ به لاننا سنحتاجه للتعامل مع المكتبة عبر برنامجنا.
جهز نفسك لننطلق في تجهيز البرنامج...

سننتقل الى الفورم الرئيسي لدينا و نصممه كما في الصورة



قررت تقسيم الشاشة الى قسمين واحد لرفع الملفات و الثاني لتحميل الملفات
شرح الارقام بالترتيب و ما يقابلها من سيناريوهات.

اولاً القسم الخاص برفع الملفات.
1- GetFiles سيكون لدينا اجراء يقوم بفتح مستعرض المجلدات لتحديد الملفات داخل المجلد.
2- DataGridView صمم ليعرض لنا اسماء الملفات داخل المجلد المحدد سابقاً مع معلومات عن حجم كل ملف و رقم النسخة الخاصة به و مسار الملف.
تجدر الاشارة الى ان الملفات التي لا تحمل في خصائصا رقم نسخة سنقوم باعطائها الرقم صفر.
العمود Status داخل القريد من النوع CheckBox سنستخدمه لتحديد الملفات التي نريد رفعها.
3- Upload سيقابله اجراء يقوم بالمرور على الملفات المحددة و رفعها الى مسار محدد داخل مساحتنا , المجلد Folder1 الذي انشأناه سابقاً.
4- يعرض لنا الملف الحالي الجاري رفعه الى المسار المحدد مع عرض نسبة الرفع بالتزامن مع ProgresBar فوقه لتكون العملية تفاعلية.
هذا فيما يخص قسم الرفع.

ثانياً القسم الخاص بالتحميل

5- يعرض لنا المسار الذي يتم التحميل منه.
6- هنا تظهر الملفات التي داخل المسار السابق.
7- Download يقابله اجراء يقوم بالمرور على الملفات السابقة و البدء بتحميلها الى القرص المحلي وفق المسار المعطى داخل الكود.
8- يعرض الملف الحالي الجاري تحميله مع نسبة التقدم بالتوامن مع  ProgresBar  تفاعلي.

كل العمليات من رفع و تحميل تتم بشكل تزامني Asyncronis و تجري اغلب العمليات في مهام منفصلة لكي لا نواجه مشاكل التجميد
حيث يمكنك الرفع و التحميل في نفس الوقت.


ندخل الى محرر الاكواد الخاص بنا لنتعرف الى اهم عناصر المكتبة.


في البداية يلزمنا استيراد الفضاءات التالية لنتمكن من العمل.
PHP كود :
Imports Dropbox.Api
Imports Dropbox
.Api.Files
Imports System
.IO
Imports System
.Net 
سنعمل على القسم الاول الخاص برفع الملفات.
لذا سنقوم بتعريف اجراء يقوم بفتح المستعرض على مكان محدد لنسحب الملفات بداخله الى القريد الخاص بنا.
سنقوم ببناء جدول له نفس اعمدة القريد و نخزن داخله المعلومات القادمة من كل ملف و من ثم نسنده الى القريد.
PHP كود :
   Private Function BuildTable() As DataTable
        Dim Dt 
As New DataTable
        Dim Columns 
As New List(Of DataColumn)
 
       Columns.Add(New DataColumn With {.ColumnName "Status"})
 
       Columns.Add(New DataColumn With {.ColumnName "FileName"})
 
       Columns.Add(New DataColumn With {.ColumnName "FileSize"})
 
       Columns.Add(New DataColumn With {.ColumnName "Version"})
 
       Columns.Add(New DataColumn With {.ColumnName "FilePath"})

 
       Dt.Columns.AddRange(Columns.ToArray)
 
       Return Dt

    End 
Function 
هذا الاجراء المسؤول عن تشكيل الجدول .
الان سيكون لدينا اجراء لجلب الملفات و المرور على كل ملف و نستخلص منه الاسم و الحجم و رقم النسخة و المسار.
PHP كود :
  Dim Dt_FileUpdate As New DataTable
    Private Sub Btn_CollectFiles_Click
(sender As ObjectAs EventArgsHandles Btn_CollectFiles.Click
        If 
(FolderBrowserDialog1.ShowDialog() = DialogResult.OKThen
            Txt_Path
.Text FolderBrowserDialog1.SelectedPath

            Dt_FileUpdate 
BuildTable()
 
           Try
                Me
.Cursor Cursors.WaitCursor
                For Each f In Directory
.GetFiles(Txt_Path.Text"*"IO.SearchOption.AllDirectories)
 
                   Dim _file As New IO.FileInfo(f)

 
                   FileVersionInfo.GetVersionInfo(f)
 
                   Dim myFileVersionInfo As FileVersionInfo FileVersionInfo.GetVersionInfo(f)

 
                   Dim F_Version As String myFileVersionInfo.FileVersion
                    If String
.IsNullOrEmpty(F_VersionThen F_Version 0



                    Dim Row 
As String() = New String() {"False"_file.NameGetSizeKB(f), F_Versionf}
 
                   Dt_FileUpdate.Rows.Add(Row)

 
               Next
                DGV1
.DataSource Dt_FileUpdate
                Me
.Cursor Cursors.Arrow
            Catch ex 
As UnauthorizedAccessException
                MsgBox
(ex.Message)
 
               Me.Cursor Cursors.Arrow
            End 
Try
 
       End If
 
   End Sub 

الاجراء يقوم باضافة معلومات كل ملف الى الجدول Dt_FileUpdate .
الاجراء المسؤول عن حجم كل ملف كالتالي:
PHP كود :
   Public Function GetSizeKB(ByVal filename As String) As Double
        Dim len 
As Double = New FileInfo(filename).Length 1024
        Return String
.Format("{0:0.##}"len)
 
   End Function 
بعد ان تكون القريد قد احتوت على ملفات , يمكننا الان معالجة عملية رفع الملفات.
عند هذه النقطة سنحتاج الى كائنات رئيسية من المكتبة الخاصة بـ DropBox.
الكائن الرئيسي في هذه المكتبة هو DropboxClient , هو المسؤول عن التخاطب و الارسال و الاستقبال...
داخل هذا الكائن سنرسل Access Token التي حصلنا عليها سابقاً , و هي ترسل كوسيطة نصية.
كما و يرتبط هذا الكائن بشكل وثيق مع HttpClient الخاص بالمكتبة Http.HttpClient . و هي المكتبة الحديثة من اطار عمل الدوت نت
وهذه المكتبة صصمت للتعامل بشكل تزامني مع ملفات الانترنت و المواقع.
يحتاج الكائن الى ضبط بعض الاعدادات البسيطة.

نعرف هذه المتغيرات في بداية النموذج.
PHP كود :
   Dim config As DropboxClientConfig
    Dim client 
As DropboxClient
    Dim httpClient 
As Http.HttpClient
    Dim Path 
As String "/UpdateFolder63/Folder1" 'مسار المجلد في الموقع 
في بداية اقلاع النموذج
PHP كود :
       'تعريفات و ضبط اعدادت
        httpClient = New Http.HttpClient(New Http.WebRequestHandler With {
                                             .ReadWriteTimeout = 10 * 1000}) With {.Timeout = TimeSpan.FromMinutes(20)}


        config = New DropboxClientConfig("AnyThing") With {.HttpClient = httpClient}

        client = New DropboxClient(My.Settings.AccessToken, config) 
لقد خزنا Access Token داخل اعدادات البرنامج لنستدعيها في اي مكان.

يتبع ....
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
تم الشكر بواسطة: asemshahen5


الردود في هذا الموضوع
نظرة على DropBox SDK و التعامل معها +برنامج رفع و تحميل ملفات - بواسطة ابو ليلى - 14-04-20, 01:04 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيف تتعامل مع برنامج الإكسيل من برنامجك rinawi 7 7,222 12-11-22, 12:11 AM
آخر رد: خالد العصاوي
  دمج ملفات المشروع ابو روضة 4 2,084 11-11-22, 09:50 PM
آخر رد: ابو روضة
  برنامج مبيعات ومشتريات وإدارة أعمال ( الفاتورة الإلكترونية ) yassoo1985 2 2,818 04-06-22, 01:14 PM
آخر رد: yassoo1985
Heart طلب برنامج Advanced Installer أبو خالد الشكري 0 1,715 16-05-22, 09:12 PM
آخر رد: أبو خالد الشكري
  أهم طرق إدارة المخازن وتطبيقها على برنامج مخازن وارد ومنصرف Menna ahmeed 0 2,816 27-04-22, 12:52 PM
آخر رد: Menna ahmeed
  طريقة إنشاء برنامج طباعة ملصقات الباركود ملهمـ 1 5,018 22-12-21, 05:09 PM
آخر رد: alessam4pro
  التعامل مع الصور Images في بيئة الدوت نت باستخدام +GDI - مقدمة RaggiTech 3 6,338 30-07-21, 05:14 PM
آخر رد: kebboud
Lightbulb [مقال] التعامل مع ملفات اوفيس من خلال مكتبة NPOI ابو ليلى 2 4,612 01-07-21, 11:42 AM
آخر رد: kebboud
Heart [VB.NET] برنامج ادارة المطاعم و الكافيهات mgr21002100 6 7,400 14-01-21, 07:59 PM
آخر رد: abarrak
Lightbulb [مقال] التعامل مع اختصارات الملفات Shortcuts Magic Sword 2 4,706 01-10-20, 11:36 AM
آخر رد: abomo3ath

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


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