بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
دانلود File Mime Type با کتابخانه Volley (خیلی فوری و ضروری)
0
0
کسی هست راهنمایی کنه..ممنون میشم (7 سال پیش)
0
0
کسی هست در مورد File Mime Type ها توضیحی بده و بگه منظور از اینها ینی چی و چطور با کتابخانه Volley دانلودشون کنم؟! (7 سال پیش)
+1
0
سلام لینک (7 سال پیش)
0
0
ممنونم سید جان
(7 سال پیش)
برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال
mosafer
7 سال پیش
0
0
سلام
سهیل جان من از این لینک استفاده کردم و لاگی که به من میده این هست و فکر میکنم درست کار نکرده..
D/AudioFlinger: mixer(0xa7b83440) throttle end: throttle time(42)
E/FILE NAME: " .txt"
W/System.err: java.io.FileNotFoundException: /storage/emulated/0/" .txt" (Permission denied)
W/System.err: at java.io.FileOutputStream.open(Native Method)
W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:169)
W/System.err: at com.example.mosafer.transport.FileDownloadActivity.onResponse(FileDownloadActivity.java:78)
W/System.err: at com.example.mosafer.transport.FileDownloadActivity.onResponse(FileDownloadActivity.java:29)
W/System.err: at com.example.mosafer.transport.InputStreamVolleyRequest.deliverResponse(InputStreamVolleyRequest.java:53)
W/System.err: at com.example.mosafer.transport.InputStreamVolleyRequest.deliverResponse(InputStreamVolleyRequest.java:15)
W/System.err: at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
W/System.err: at android.os.Handler.handleCallback(Handler.java:751)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err: at android.os.Looper.loop(Looper.java:154)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6119)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
ممنون میشم
پاسخ به سوال
mosafer
7 سال پیش
0
0
خب این طور هم میتونه باشه چون من علاوه بر این کدها باید یه چیز دیگه هم اضافه میکردم و اون Authorization برا هدرش هست که باید با این دستورات میفرستادم که انگار درست جا گذاریش نکردم. بهتره کد رو بذارم شما ببینید که قسمت متد ()getHeaders رو باید کجای کدم بذارم !!!
این کلاس InputStreamVolleyRequest :
class InputStreamVolleyRequest extends Request<byte[]> {
private final Response.Listener<byte[]> mListener;
private Map<String, String> mParams;
//create a static map for directly accessing headers
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);
// this request would never use cache.
setShouldCache(false);
mListener = listener;
mParams=params;
}
@Override
protected Map<String, String> getParams()
throws com.android.volley.AuthFailureError {
return mParams;
};
** آیا این متد رو اینجا باید بذارم؟ **
این قسمت رو خودم باید اضافه میکردم
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
String credentials = "seyedali" + ":" + "12345"; //باید با یوزرنیم و پیورد کاربر فایل رو بخونم و دان کنم
String auth = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
headers.put("Authorization", auth);
return headers;
}
@Override
protected void deliverResponse(byte[] response) {
mListener.onResponse(response);
}
@Override
protected Response<byte[]> parseNetworkResponse(NetworkResponse response) {
//Initialise local responseHeaders map with response headers received
responseHeaders = response.headers;
//Pass the response data here
return Response.success( response.data, HttpHeaderParser.parseCacheHeaders(response));
}
}
و اینم کلاس FileDownloadActivity :
public class FileDownloadActivity extends ActionBarActivity implements Response.Listener<byte[]>, ErrorListener{
Button btn_download;
InputStreamVolleyRequest request;
int count;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_file_download);
btn_download =(Button)findViewById(R.id.button5);
btn_download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Change your url below
String mUrl = G.url + "file/download/1";
request = new InputStreamVolleyRequest(Request.Method.GET, mUrl, FileDownloadActivity.this, FileDownloadActivity.this, null);
Log.e("Url ", mUrl);
RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext(), new HurlStack());
mRequestQueue.add(request);
}
});
}
@Override
public void onResponse(byte[] response) {
HashMap<String, Object> map = new HashMap<String, Object>();
try {
if (response!=null) {
//Read file name from headers
String content =request.responseHeaders.get("Content-Disposition")
.toString();
StringTokenizer st = new StringTokenizer(content, "=");
String[] arrTag = st.toArray();
String filename = arrTag[1];
filename = filename.replace(":", ".");
Log.e("FILE NAME", filename);
Toast.makeText(this, "file name : " + filename , Toast.LENGTH_SHORT).show();
try{
long lenghtOfFile = response.length;
//covert reponse to input stream
InputStream input = new ByteArrayInputStream(response);
File path = Environment.getExternalStorageDirectory();
File file = new File(path, filename);
map.put("resume_path", file.toString());
BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(file));
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
}catch(IOException e){
e.printStackTrace();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
Log.e("KEY_ERROR", "UNABLE TO DOWNLOAD FILE");
e.printStackTrace();
}
}
@Override
public void onErrorResponse(VolleyError error) {
Log.e("KEY_ERROR", "UNABLE TO DOWNLOAD FILE. ERROR:: "+error.getMessage());
}
}
ممنون میشم اشکال کارم رو بهم بگین.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .