09357900665 Basic4x@gmail.com تایم کاری : شنبه تا پنج شنبه تهران ، ولیعصر

آموزش دانلود فایل با 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 خودتون رو قرارب دید و مسیر دانلودی فایل در زیر خواهد بود.

مجتبی حسین زاده

65 مطلب منتشر شده

مجتبی حسین زاده سلام خدمت شما، مجتبی هستم مدیر و موسس اندروید راست چین، بیش از 15 سال تو حوزه برنامه نویسی اندروید و وب هستم و در کنار وبلاگ نویسی و طراحی سایت و همچنین برنامه نویسی اندروید در زمینه شبکه و دوربین های مداربسته نیز فعالیت دارم. خوشحال میشم اگه سوالی داشته باشید با بنده مطرح کنید.

درباره این مطلب نظر دهید !