آموزش دانلود فایل با volley در اندروید
![آموزش دانلود فایل با volley در اندروید](https://jetamooz.com/wp-content/uploads/2020/02/voly.jpg)
سلام دوستان عزیر امیدوارم روزهای خوبی را سپری کرده باشید در این سری از آموزش های برنامه نویسی اندروید به آموزش دانلود فایل با 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 در اندروید به پایان رسید.
موفق و پیروز باشید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.