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