ارسال فایل با استفاده از Retrofit در اندروید

استفاده از Retrofit برای تبادل اطلاعات با سرور روز به روز گسترش پیدا می‌کنه. سرعت و سهولت استفاده، از ویژگی‌های خوب این کتابخانه هست. تقریبا ۲۰ روزی هست که مشکل ارسال فایل با نام متغیر در این کتابخانه حل شده، خواستم که در اینجا آموزش این کار رو قرار بدم.

ابتدا خطوط زیر رو به build.gradle اضافه کنید. دقت کنید که این امکانات در همین ورژن ارائه شده‌است:

بزارید که gradle کار sync کردن کتابخانه‌ها رو انجام بده.

کلاس interface به نام RetrofitService ایجاد کنید:

در این کلاس تابع uploadImage تعریف شده که اطلاعات رو به لینک uploadImage.php به صورت POST ارسال می‌کنه.

روش فراخوانی این تابع بدین صورت هست:

مقدار آدرس سرور که به عنوان baseUrl به Retrofit ارسال میشه (برای مثال) به صورت زیر تعریف می‌شه:

تابع upload تعریف شده دو مقدار دریافت می‌کنه، یکی میسر فایل و دیگری نام فایل مورد نظر برای آپلود. نکته‌ای که در مورد ارسال فایل در Retrofit وجود داره اینه که حتما باید نام فایل به همراه فایل ارسال بشه. در روش ذکر شده با استفاده از HashMap می‌تونید چندین فایل رو برای آپلود ارسال کنید.

فراخوانی تابع upload به صورت زیر است:

در آخر کد مروبط به بخش دریافت‌کننده فایل که با زبان php نوشته شده رو ببینید (دقت کنید که این کد به ساده‌ترین صورت ممکن نوشته شده):

فایل ارسال شده در پوشه uploadImages قرار می‌گیره.

بهروز خضری

کارهای خیلی زیادی انجام دادم توو برنامه‌نویسی ولی خیلی‌هاشون بی‌ثمر بودن برام. سه سالی است که برنامه‌نویسی اندروید انجام میدم. زمینه اصلی فعالیتم در‌ GIS و کار بر روی داده‌های مکانی در اندروید است.

همچنین ممکن است دوست داشته باشید ...

۱۲ واکنش

  1. علی گفت:

    معرکه اید
    ممنونم

  2. تلاش گفت:

    بسیار عالی، شما از محدود سایت های فعال در زمینه تولید محتوا هستید و بسیار معرکه اید.

  3. fariborz گفت:

    سلام و یه خسته نباشید جانانه برای زحمات بسیار بسیار با ارزشتون
    خیلی آموزش هاتون عالیه فقط یه موردی رو اگه رعایت کنید ممنون خیلی عالی میشه
    اونم اینه که محل کد هارو مشخص کنید. مثلا بگید توی MainActivity.java فلان رو وارد می کنید.
    که ساختار مشخص تر و واضح تر بشه. مخصوصا برای افراد مبتدی چون من.
    در کل امیدوارم همچنان با قدرت ادامه بدید و به یه مرجع عالی تبدیل بشین.

  4. علی راغبی گفت:

    سلام
    با تشکر از زحمتاتون
    ببخشید من با یه ارور توی هاست برخورد میکنم ، فایل لاگ رو تو لینک زیر آپلود کردم ، اگه لطف کنید نگاه کنید و کمکم کنید ممنون میشم،با تشکر

    • علی راغبی گفت:

      ببخشید لینک یادم رفت بزارم!!!
      http://s6.uplod.ir/i/00768/glvt57n49wd1.png

      • بهروز خضری گفت:

        سلام،
        دو نکته رو مد نظر داشته باشید.
        اول اینکه این آموزش برای این نسخه خاص نوشته شده، ممکن هست که تغییراتی در کتابخانه انجام شده باشه.
        نکته دوم که به نظرم مشکل کار شماست، تعریف index‌ ارسالی به عنوان اسم فایل هست.
        اسمی که داخل کدتون ست کردید با چیزی که مقدارش رو می‌خواید بخونید، یکی نیست.

  5. علی گفت:

    سلام
    خیلی ممنون از آموزش مفیدتون!

    میتونید یه راهنمایی کنید که چجوری درصد فایل آپلود شده رو به کاربر نمایش بدم؟

  6. unko گفت:

    ببخشید امنیت این کتابخونه نسبت به کتابخانه ها volly و okhttp چجوریه

    • منظورتون رو متوجه نشدم.
      پیاده‌سازی برقراری امن ارتباط با سرور بر عهده خودتون هست. این کار رو می‌تونید با access token انجام بدید که
      ربطی به کتابخانه اصلی‌تون نداره. okhttp هم زیر مجموعه‌ای از retrofit هست. جفت‌شون مال یک شرکت هستند.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *