آموزش برنامه نویسی اندروید
آموزش های رایگان

  آموزش دانلود و ذخیره فایل در بیسیک فور اندروید

در این قسمت میخواهیم به این موضوع بپردازیم که چگونه یک فایل را از اینترنت دانلود کنیم و آن را ذخیره کنیم یا در برنامه نمایش دهیم , برای شروع ابتدا کتابخانه okHttpUtils2 را فعال کنید ( این کتابخانه در لیست کتابخانه های پیشفرض بیسیک فور اندروید قرار دارد )

حالا در بخشی که میخواهید دانلود انجام شود ( شروع شود ) این کتابخانه را تعریف کنید و با استفاده از دستور Download لینک دانلود را قرار دهید , برای مثال ما یک Button با نام Download داریم و در رویداد مر بوط به کلیک آن کد های زیر را قرار میدهیم تا با لمس آن دکمه دانلود شروع شود :

Sub Download_Click
 Dim ht As HttpJob
 ht.Initialize("GetText",Me)
 ProgressDialogShow2("در حال دانلود ...",False)
 ht.Download("https://basiclearn.ir/MyText.txt")
End Sub

در ابتدا میخواهیم یک فایل متنی دریافت کنیم و متن آن را در برنامه نمایش دهیم ,

در کد بالا یک متغیر با نام ht از نوع HttpJob ایجاد کرده ایم و آن را Initialize نموده ایم و EventName آن را روی GetText تنظیم نموده ایم ( شما میتوانید هر عبارتی را برای EventName مشخص کنید که در ادامه با کاربرد آن آشنا خواهید شد ) و سپس با استفاده از گزینه Download لینک دانلود فایل متنی را قرار داده ایم .

همچنین یک ProgressDialog هم نمایش میدهیم تا بتوانیم روند دانلود را مشاهده کنیم . و اما برای اینکه بفهمیم دانلود انجام شده است یا نه لازم است رویداد JobDone را به اکتیویتی اضافه کنید :

Sub JobDone (job As HttpJob)
 If job.Success Then
 ' درصورتی که دانلود انجام شده باشد
 Else
 ' درصورتی که دانلود انجام نشده باشد
 End If
End Sub

همانطور که قبلا گفتیم در ابتدا میخواهیم یک متن از اینترنت دریافت کنیم و در برنامه نمایش دهیم . بنابراین برای دریافت متن از فایل متنی دانلود شده کافیست از دستور Job.GetString استفاده کنید :

Sub JobDone (job As HttpJob)
 ProgressDialogHide ' ProgressDialog مخفی کردن
 If job.Success Then
   Label1.Text = job.GetString
 Else
   Label1.Text = "دریافت انجام نشد !"
 End If
 job.Release
End Sub

در کد بالا ابتدا ProgressDialog را مخفی میکنیم و متن دریافت شده را در یک Label نمایش میدهیم . همچنین در انتها از دستور Job.Release استفاده میکنیم تا پس از اتمام دانلود برنامه دیگر درگیر سرویس دانلود نباشد .

پس تا اینجا یاد گرفتیم که یک فایل متنی را دانلود کنیم و متن آن را در برنامه نمایش دهیم و حالا میخواهیم یک تصویر را دانلود کنیم و در برنامه نمایش دهیم . برای این کار ما یک دکمه دیگر با نام DownloadImage مشخص کیده ایم و با کلیک روی آن میخواهیم تصویر دانلود شود و در یک ImageView نمایش داده شود :

Sub DownloadImage_Click
 Dim ht As HttpJob
 ht.Initialize("GetImg",Me)
 ProgressDialogShow2("در حال دانلود تصویر ...",False)
 ht.Download("https://basiclearn.ir/MyImage.jpg")
End Sub

اینبار EventName را روی GetImg تنظیم کرده ایم و برای اینکه بفهمیم متن دانلود شده است یا تصویر میتوانید از دستورات شرطی در رویداد JobDone استفاده کنید :

Sub JobDone (job As HttpJob)
 ProgressDialogHide
 If job.Success Then
   Select job.JobName
     Case "GetText"
       ' درصورتی که متن با موفقیت دریافت شود
       Label1.Text = job.GetString
     Case "GetImg"
       ' درصورتی که تصویر با موفقیت دریافت شود
       ImageView1.Bitmap = job.GetBitmap
   End Select
 Else
   Select job.JobName
   Case "GetText"
     Label1.Text = "متن دریافت نشد !"
   Case "GetImg"
     ToastMessageShow("تصویر دریافت نشد !",False)
   End Select 
 End If
 job.Release
End Sub

در کد بالا ابتدا بررسی کرده ایم که آیا متن دانلود شده است یا تصویر و تصویر را با استفاده از دستور Job.GetBitmap دریافت نموده ایم و در یک ایمیج ویو با نام ImageView1 نمایش داده ایم . در صورتی که قصد دارید فایل تصویر را در حافظه گوشی ذخیره کنید میتوانید از کد زیر استفاده کنید :

Dim out As OutputStream
out = File.OpenOutput(File.DirRootExternal&"/Pictures","BasicLearn.png",False)
job.GetBitmap.WriteToStream(out,100,"PNG")
out.Close

در کد بالا ما مشخص کرده ایم که تصویر در پوشه Pictures حافظه اصلی گوشی با نام BasicLearn.jpg ذخیره شود . همچنین کیفیت را روی 100 (بالا ترین کیفیت) و فرمت PNG را مشخص نموده ایم , البته برای ذخیره فایل لازم است برنامه مجوز دسترسی به فایل ها را داشته باشد ( مجوز ها را میتوانید با کتابخانه RuntimePermissions تنظیم کنید , برای اطلاعات بیشتر فایل سورس این آموزش را دانلود کنید )

پس تا اینجا یاد گرفتیم که چگونه یک متن یا تصویر را دانلود کنیم و در برنامه نمایش دهیم و حالا میخواهیم یک فایل را دانلود کنیم و آن را در حافظه گوشی ذخیره کنیم . برای دانلود فایل کافیست همان مراحل بالا را طی کنید و در بخش JobDone فایل دانلود شده را ذخیره کنید :

Dim out As OutputStream
out = File.OpenOutput(File.DirRootExternal,"MyFile.zip",False)
File.Copy2(job.GetInputStream,out)
out.Close

در کد بالا به جای MyFile.zip باید نام فایل و فرمت فایل را برای ذخیره در حافظه گوشی مشخص کنید . در پایان امیدواریم که این آموزش هم مورد استفاده شما عزیزان قرار گرفته باشد و درصورتی که کد های بالا را متوجه نشدید توصیه میکنیم فایل سورس این آموزش را از لینک زیر دانلود کنید :

دانلود فایل : فقط اعضای سایت میتوانند به لینک دانلود دسترسی داشته باشند ( وارد شوید یا ثبت نام کنید )
  دانلود با لینک مستقیم
  رمز فایل : ندارد !
  حجم فایل : 9 کیلوبایت
  منبع : بیسیک لرن
ما را در تلگرام دنبال کنید !
BasicLearn@

درباره نویسنده

حامد باقری

برنامه نویس اندروید , طراح وب , طراح گرافیک و رابط کاربری
( مدیر مجموعه بیسیک لرن )
www.HamedBagheri.ir

نظر بدهید

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.