اندروید

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

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

سلام دوستان عزیر امیدوارم روزهای خوبی را سپری کرده باشید در این سری از آموزش های برنامه نویسی اندروید به آموزش دانلود فایل با volley در اندروید می پردازیم کتابخانه volley فوق العاده قویه هرچند که Structure درستی برای پروژه های خیلی بزرگ نداره ولی خب برای پروژه های دمه دستی میشه از بهره برد در ادامه با ما همراه باشید تا بیشتر با کتابخانه volley و همینطور نحوه دانلود فایل آشنا شوید.

ما باید فایل ها رو در حافظه خارجی یا داخلی گوشی ذخیره کنیم نمی توان فایل های دانلودی را در پوشه از اپ خودمان (مثلا raw) ذخیره کنیم !

ابندا یک کلاس به شکل زیر ایجاد کنید در ادامه توضیح میدیمش !

class InputStreamVolleyRequest extends Request<byte[]> {
    private final Response.Listener<byte[]> mListener;
   private Map<String, String> mParams;
 
   public Map<String, String> responseHeaders ;
 
    public InputStreamVolleyRequest(int method, String mUrl ,Response.Listener<byte[]> listener,
                                    Response.ErrorListener errorListener, HashMap<String, String> params) {
      // TODO Auto-generated constructor stub
       
        super(method, mUrl, errorListener);
         setShouldCache(false);
         mListener = listener;
         mParams=params;
   }
 
   @Override
   protected Map<String, String> getParams()
         throws com.android.volley.AuthFailureError {
      return mParams;
   };
 
   
    @Override
    protected void deliverResponse(byte[] response) {
        mListener.onResponse(response);
    }
 
    @Override
    protected Response<byte[]> parseNetworkResponse(NetworkResponse response) {
 
        responseHeaders = response.headers;
         return Response.success( response.data, HttpHeaderParser.parseCacheHeaders(response));
    }
}

خب در بالا چه چیزی داره اتافق میفته سوال شماست هر فایلی از سرور بخواهید دانلودش کنید به صورت byte در شبکه منشتر می شود پس ما می توانیم byte فایل ها را از سرور بخوانیم و در نهایت byte رو در respone دریافت کنیم و ازش فایل رو ایجاد کنیم.

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

String mUrl= <YOUR_URL>;
InputStreamVolleyRequest request = new InputStreamVolleyRequest(Request.Method.GET, mUrl,
        new Response.Listener<byte[]>() { 
             @Override 
             public void onResponse(byte[] response) { 
           // TODO handle the response 
            try { 
            if (response!=null) {
 
              FileOutputStream outputStream;
              String name=<FILE_NAME_WITH_EXTENSION e.g reference.txt>;
                outputStream = openFileOutput(name, Context.MODE_PRIVATE);
                outputStream.write(response);
                outputStream.close();
                Toast.makeText(this, "Download complete.", Toast.LENGTH_LONG).show();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            Log.d("KEY_ERROR", "UNABLE TO DOWNLOAD FILE");
            e.printStackTrace();
        }
  }
} ,new Response.ErrorListener() {
 
  @Override
  public void onErrorResponse(VolleyError error) {
    // TODO handle the error
    error.printStackTrace();
  }
}, null);
          RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext(), new HurlStack());
          mRequestQueue.add(request);

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

data/data/<your_application>/<file_name>

آموزش  دانلود فایل با volley در اندروید به پایان رسید.

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

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

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