هم اکنون عضو شوید

ورود

فراموشی گذرواژه

گذروازه خود را فراموش کردید ؟

ورود

عضو شوید

با عضویت در سایت از امکانات فوق العاده بهرمنده خواهید شد.

آموزش دانلود فایل از وب سرور در اندروید

آموزش دانلود فایل از وب سرور در اندروید

سلام دوستان در این سری از آموزش های برنامه نویسی اندروید به آموزش دانلود فایل از وب سرور در اندروید می پردازیم دانلود کردن فایل از وب سرور ممکن است بعضی مواقع مورد نیاز باشد به طور مثال شما باید یک فایل zip حاوی یکسری دیتا رو دانلود کنید و برنامه شما اون دیتا رو به عنوان یه دیتا مهم در برنامه اش استفاده کند یا یک سری عکس را از وب سرور بگیرید و در یک اسلایدر نمایش دهید در ادامه ما همراه باشید.

ابتدا ما باید یک کلاس در همون کلاسی که می خواییم فایل دانلود بشه ایجاد کنیم (مثلا می خوایم توی Mainactivity فایل دانلود بشه باید این کلاس رو زیر آن قرار دهیم).

 

در بالا ما از کلاس Async Task استفاده کردیم که این کلاس باعث هماهنگی دانلود می شود که خود آن یک doinBackground دارد که باعث می شود کاربر با آن درگیر نشود و برنامه در پشت زمینه کار دانلود  را انجام دهد. ما یکسری موارد را در برنامه بررسی کردیم به طور مثال بررسی کردیم آیا سرور فعال است یا نه برای این کار یک request به سرور ارسال می کنیم سپس اگر عدد ۲۰۰ یعنی (server ok) بازگشت متوجه می شویم اون سرور یا اون url سالم است. متغییر fileLength اندازه فایل را بر می گرداند و از این در جلوتر استفاده خواهیم کرد و connection.getInputStream که در بالاتر ما connection را تعریف کرده بودیم فایل را به صورت byte دریافت می کند.

با کد بالا شما می توانید هر فایلی را دانلود کنید برای اینکه فایل های دیگه رو دریافت کنید باید در خط زیر تغییراتی را اعمال کنید.

به جای zipfile.zip نام فایل و پسوندش را جایگزین کنید.

ما از try و catch استفاده کردیم تا در صورتی که اینترنت قطع شد یا خطایی رخ داد برنامه force close ندهد.

 

حالا برای اینکه از این کلاس استفاده کنیم در اکتویتی خودتان کد زیر را قرار دهید.

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

می تونید از ProgressDialog استفاده نکنید ولی منطقی این است که از آن استفاده کنید ما قبلتر آموزش ProgressDialog  را در سایت قرار داده بودیم کافی است یک سرچی در سایت بزنید.

 

بعد از این کار مثل همیشه باید دسترسی را اضافه کنیم در صورتی که این دسترسی ها را به برنامه اضافه نکنید برنامه شما force close می دهد.

وارد فایل Androidmanifest.xml شوید و خط های زیر را به آن اضافه کنید.

 

این آموزش هم به پایان رسید امیدوارم نیاز شما را بر طرف کرده باشم

 

موفق باشید.

 

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

با زبان های برنامه نویسی C# , Java , Php به صورت تخصصی کار کردم و بیشتر وقتم رو در برنامه نویسی می گذرونم علاقه زیادی به ساخت اپلیکیشن اندروید دارم.

نظرها ( ۱۷ )

  1. علی رحمانپور
    ۱۸, تیر , ۱۳۹۶ در ۱۰:۲۸ ب.ظ

    سلام ببخشید میشه راهنمایی کنید الان من بخوام این کلاسو صدا بزنم با یه لینک چه کدی بنویسم بعد این که من میخوام این کلاسو تغییر بدم تا دو تا لینک بگیره چه کنم؟

    • محمد حسین جعفری پور
      ۱۹, تیر , ۱۳۹۶ در ۱:۱۸ ق.ظ

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

      به جای youractivity نام اکتویتی خودتان را قرار دهید و این متد فقط یک لینک میگیرد شما می توانید دوبار از این کلاس استفاده کنید یا مقدار ورودی را به آرایه تبدیل کنید تا تعداد ورودی بیشتر نیز بگیرد برای این کار باید کلاس اصلی را تغییر دهید.
      موفق باشید.

  2. علی رحمانپور
    ۱۹, تیر , ۱۳۹۶ در ۳:۴۶ ب.ظ

    میشه بپرسم برای این که ارایه ای کنم باید کدوم متغییر و تغییر بدم اخه من از کلاس خیلی سردرنیاوردم

    • محمد حسین جعفری پور
      ۱۹, تیر , ۱۳۹۶ در ۵:۳۶ ب.ظ

      سلام حدودا باید همه را به ارایه تبدیل کنید (راحت ترین کار برای شما دوبار فرخوانی آن است دوبار همان کلاس را اجرا کنید)
      موفق باشید.

      • علی رحمانپور
        ۱۹, تیر , ۱۳۹۶ در ۹:۰۲ ب.ظ

        نمیشه اخه فایل هام کلا فرق میکنه و باید دوجای جدا ذخیره شه و با اسم ها و پسوند های مختلف

      • علی رحمانپور
        ۱۹, تیر , ۱۳۹۶ در ۹:۰۶ ب.ظ

        فقط میخوام بدونم کجای کلاس گفته که لینک بگیره بقیشو درست میکنم خودم نمیتونم بفهمم کجا لینک رو میگیره

        • محمد حسین جعفری پور
          ۱۹, تیر , ۱۳۹۶ در ۱۰:۵۴ ب.ظ

          سلام و درود
          این بخش لینک دانلود رو میگیره

          و دانلود می کنه ولی شما باید کل کد رو تغییر بدهید از doInbackground گرفته تا

          هم باید تغییر کند

  3. علی
    ۱۶, مرداد , ۱۳۹۷ در ۱۱:۵۹ ق.ظ

    سلام دوست عزیز
    ممنون با بت آموزش خوبتون
    فقط یه نکته برنامه واسه من دانلود رو به صورت کامل انجام میده اما ProgressDialog اصلا نشون نمیده
    show هم کردم نشون داد اما پر نمیکنه

    • محمد حسین جعفری پور
      ۱۷, مرداد , ۱۳۹۷ در ۱:۳۶ ق.ظ

      سلام و درود
      در اندروید بالای ۵ باید از runtimepermission استفاده کنید که در بالا استفاده نشده همین واژه رو سرچ کنید در سایت هست آموزشش

      موفق باشید.

  4. رحمان
    ۵, آذر , ۱۳۹۷ در ۷:۰۷ ب.ظ

    سلام
    ابتدا تشکر میکنم از آموزش و سایت خوبتون …
    اما باید بگم اینکه بخای یک آدرس اینترنتی بزاری که فایده نداره … برنامه باید طوری باشه که هر فایلی که قابل دانلود باشه در یک لیست قرار بگیره و کاربر با کلیک روی اون بتونه فایل رو دانلود بکنه …
    … لطفا یک آموزش بزارید … که چطور میشه مطالب سایت هایی که دارای api هستند رو از طریق کتابخونه json و volly بر روی برنامه دریافت کرد …
    ممنون

    • محمد حسین جعفری پور
      ۵, آذر , ۱۳۹۷ در ۱۱:۲۰ ب.ظ

      سلام و درود
      برای اینکار کافیه شما یک api داشته باشید و آن را در لیست نمایش دهید بعد از اینکا با کلیک بروی هر آیتم لینک هر مثلا عکس رو از طریق همون api به دست بیارید و به کلاس بعدی که مثلا کارش عمل دانلود هست پاس بدید.

      موفق و پیروز باشید.

  5. حسن
    ۱۵, آذر , ۱۳۹۷ در ۱۱:۴۳ ق.ظ

    سلام ممنون از اموزشتون
    من روی اندروید ۴٫۴٫۲ امتحان کردم دانلود میشه و توی progress Bar نشون میده ولی پر نمیشه . پروگرس بار اصلا پر نمیشه ولی فایل دانلود میشه و پروگرس بار حتی بعد از اتمام دانلود همچنان در حال اجرا هست .

  6. mehrdad
    ۲۱, مهر , ۱۳۹۸ در ۴:۴۳ ب.ظ

    سلام ،من از این کد استفاده کردم توی اجرای برنامه خیلی وقتا فایل دانلود نمیشه . progressdialogرو هم نشون نمیده! البته حجم فایل خیلی پایینه شاید بخاطر اون باشه .لطفا کمک کنید مشکل رو پیدا کنم

  7. Ali anb
    ۱۹, شهریور , ۱۳۹۹ در ۱۱:۱۷ ب.ظ

    سلام خسته نباشید
    لینک دانلود من در دیتابیس mysql قرار داره و میخوام وارد یک صفحه ای که شد، فایل مربوط به همون صفحه رو کاربر اگر خواست دانلود کنه
    میشه راهنمایی کنید که چجوری باید این عملیات رو پیاده سازی کنم؟